2012-10-10 250 views
1

我有一个webstart应用程序,我想在连接到服务器时执行客户端身份验证。我创建了使用certmgr.exe安装的pkcs12证书,并且它工作正常。 我想为使用该应用程序的每个客户端执行操作。我应该怎么做?如果我分发证书SSL证书错误

我得到一个bad_certificate错误。我知道证书没有问题,因为如果您使用浏览器安装证书,它就会起作用。

我创造了使用公钥

keytool -export -alias myKey -keystore abc.p12" -storetype PKCS12 -storepass mypassword -rfc -file abc.cer

然后我采用进口此文件到我的服务器的密钥库进行相互验证:

的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

我不知道如果我做了正确的事情,服务器的公钥。请让我知道你在想什么。

我该怎么做?请让我知道你的建议。

回答

1

您应该将它导入到您的服务器的信任存储中,而不是它的密钥存储。

+0

这是我导入证书的tomcat的TrustStorefile。 keytool -import -v -file abc.cer -keystore C:\ apache-tomcat-7.0.26 \ tomcat.keystore“-storepass mypassword – ab3421

0

您必须将证书导入您的证书文件,在JDK中是cacerts文件。这样做之后,您必须查看证书是否存在于文件中,并且您将在每个客户端上都这样做。

有关信任存储的事情是您创建自己的JKS文件。