2010-01-07 57 views
0

我无法理解使用证书的一般方案。 例如:我在某个网站上有帐户。我有namepassword。我该怎么做才能登录这个网站? - 我应该打开_https://website:443/login并填写字段,如果一切正常,我会获得准入。我如何使用用户证书?

现在,我想通过java + httpclient(apache)以编程方式执行这些步骤。 我已经写了:

client = new DefaultHttpClient(); 

client.getParams().setParameter(ClientPNames.COOKIE_POLICY, 
           CookiePolicy.BEST_MATCH); 
client.setCookieStore(new BasicCookieStore()); 
client.getCredentialsProvider() 
     .setCredentials(new AuthScope(ADDRESS, new Integer(PORT)), 
         new UsernamePasswordCredentials(USERNAME, USERPWD)); 

而且,我也要用服务器的证书创建的trustStore:

System.setProperty("javax.net.ssl.trustStore", "./KeyStore/myca"); 

其中 'myca' 用 'InstallCert.java' 造 - Sun公司的产品。

但我想以编程方式执行所有这些步骤,如浏览器(FFox或Opera)导入服务器的证书...用户只想使用我的应用程序,而不是一组额外的应用程序。

我该怎么办呢?

现在,主要问题:为什么服务器不需要用户的证书?我该如何使用自己的证书进行身份验证? (如果我有用户证书,我不需要'name''password'登录服务器?)

回答

3

为什么服务器不需要用户的 证书?

服务器不需要用户证书,因为大多数用户都没有一个,不要现在它是什么,以及如何得到一个。即使他们愿意,这样的证书要么难以获得,要么很昂贵,所以很多用户不会得到一个。

因此,任何需要客户端证书的服务器都会将用户数量减少1000倍。大多数服务器所有者不希望这样。

如果我有用户的证书我将 不需要“name''password”登录到服务器 ?

取决于您的要求。要求证书+用户名/密码将被视为双因素认证,这是一种更强有力的保护形式,然后只需要一个因素。通过询问某种生物识别技术,它会变得更加强大。

我该怎么办呢?

执行到底是什么?你正在谈论的是“以编程方式”来做事,但你已经提出了代码......?

我该如何使用我自己的证书进行身份验证?

这应该在服务器的配置中完成。您需要设置一个包含trustet根证书的信任存储+要求客户端在ssl配置中进行身份验证。例如搜索here for clientauth。

相关问题