我有一个webstart应用程序,我希望在连接到服务器时进行客户端身份验证。我已经创建了使用certmgr.exe安装的pkcs12证书,它工作得很好。我希望为使用该应用程序的每个客户端执行此操作。我该怎么做呢?如果我分发证书
我得到一个bad_certificate错误。我知道证书没有问题,因为如果您使用浏览器安装证书,它将会工作。
我使用以下命令创建了公钥
keytool -export -alias myKey -keystore abc.p12" -storetype PKCS12 -storepass mypassword -rfc -file abc.cer
然后,我将此文件导入到服务器的keystore中,以便使用以下命令进行相互身份验证:
keytool -import -v -file abc.cer -keystore C:\apache-tomcat-7.0.26\tomcat.keystore“-storepass mypassword
在此之后,如果我在certmgr中安装abc.p12证书,它可以正常工作。
为了能够在Java中做到这一点,我需要一个信任库。我创建了一个信任库,使用以下命令导入公钥
>keytool -import -keystore client-truststore.jks -file abc.cer
如果我尝试使用以下命令访问服务器
-Djavax.net.ssl.keyStore=abc.p12 -Djavax.net.ssl.keyStorePassword=mypassword -Djavax.net.ssl.trustStore=trustore.jks -Djavax.net.ssl.trustStorePassword=mypassword
我不确定我这样做是不是对的。请让我知道你的想法。
我应该做些什么?请让我知道你的建议。
发布于 2012-10-12 20:55:30
您应该将其导入到服务器的信任存储区,而不是其密钥库。
发布于 2014-01-16 02:24:17
您必须将证书导入到证书文件中,在JDK中是cacerts文件。在此之后,您必须查看证书是否存在于文件中,并且您将在每个客户端上执行此操作。
关于信任存储的事情是您创建自己的JKS文件。
https://stackoverflow.com/questions/12822747
复制相似问题