我无法理解使用证书的一般方案。
例如:我在某个网站上有帐户。我有name
和password
。我该怎么做才能登录这个网站? - 我应该打开_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的产品。
但我想以编程方式执行所有这些步骤,例如Browser(FFox或Opera)导入服务器的证书......用户只想使用我的应用程序,而不是一组额外的应用程序。
我该怎么做呢?
现在,主要问题是:为什么服务器不需要用户的证书?我如何使用自己的证书进行身份验证? (如果我有用户的证书,我将不需要'name''password'登录服务器?)
答案 0 :(得分:3)
为什么服务器不需要用户 证书?
服务器不需要用户证书,因为大多数用户没有用户证书,现在不知道它是什么以及如何获得用户证书。即使他们愿意,这样的证书要么难以获得,要么昂贵,所以很多用户都不会得到。
因此,任何需要客户端证书的服务器都会将用户数减少1000倍。大多数服务器所有者都不希望这样。
如果我有用户证书,我会的 不需要'name''password'登录 服务器
取决于您的要求。要求证书+用户名/密码将被视为双因素身份验证,这是一种更强大的保护形式,然后只需要一个因素。通过要求某种生物特征识别,它会变得更加强大。
我该怎么做呢?
完全执行什么?您正在谈论“以编程方式”执行操作,但您已经提供了代码......?
我如何使用自己的证书进行身份验证?
这应该在您的服务器配置中完成。您需要在ssl配置中设置包含trustet根证书+ require require authenticatication的信任库。例如,搜索here以获取clientauth。