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