有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用用户证书?

我不能理解使用证书的一般方案。 例如:我在某网站上有一个帐户。我有{}和{}。我应该怎么做才能登录到这个网站我应该打开_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));

我应该使用服务器的证书创建信任库:

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

其中“myca”是用“InstallCert”制作的。java'-Sun的产品

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

我该怎么做呢

现在,主要的问题是:为什么服务器不需要用户的证书?我如何使用自己的证书进行身份验证?(如果我有用户证书,我将不需要“名称”“密码”登录到服务器?)


共 (1) 个答案

  1. # 1 楼答案

    why do servers not require user's certificate?

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

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

    If I have user's certificate I will not need 'name''password' to login to server?

    这取决于你的要求。需要证书+用户名/密码将被视为双因素身份验证,这是一种更强大的保护形式,然后只需要一个因素。通过要求某种生物特征识别,它会变得更加强大

    How can I do perform it?

    具体执行什么?你说的是“以编程方式”做事情,但你已经给出了代码

    And how do I can use my own certificate to authenticate?

    这应该在服务器的配置中完成。您需要在ssl配置中设置包含信任集根证书+要求客户端身份验证的信任存储。e、 g在here中搜索clientauth