Apache HTTPClient使用TLS

时间:2015-11-26 22:11:47

标签: java apache ssl httpclient

对不起伙计们,我正在互联网上搜索这个,但我需要有人来帮助我。 我为特定服务器编写了一个客户端,我正在使用apache http客户端与它进行通信。现在我已经将TLS放在通信上了,我想知道如何将我的客户端证书放入通信中使用HTTPs.I对java keystore et similia不太自信,所以我需要有人帮助我。

1 个答案:

答案 0 :(得分:0)

keytool manual描述了如何操纵密钥库。您感兴趣的方法是-importcert。

首先应该找出客户端使用的信任库的位置。它可以由-Djavax.net.ssl.trustStore javaopt指定,也可以是您的JDK / JRE安装默认设置,其位置为<java_home>/jssecacerts<java_home>/cacerts

然后你应该检索服务器的证书。如果可以,您应该要求服务器的管理员以安全的方式提供它。否则,您可以通过不同的方式联系服务器以提供其证书,从而更容易在浏览器上访问其https界面。

此时,您可以在信任库中导入证书。如果您使用现有的信任库(如cacerts),则证书将作为新条目添加,或者您可以提供与-keystore参数无文件对应的路径,在这种情况下,将使用您的证书作为其新证书库将在此位置创建唯一条目。我建议使用后者,除非您的客户端稍后将与CA信任的服务器进行通信。

你的keytool命令看起来应该是这样的:
keytool -importcert -alias <a name for the cert> -file <cert's path> -keystore <truststore's path> -storepass <the truststore's password>

如果您创建新的信任库,则提供的-storepass将解锁以供以后使用,并且必须由-Djavax.net.ssl.trustStorePassword javaopt指定给您的客户端。如果您使用现有的信任库,则必须提供其密码(我相信cacerts&#39;是changeit)。