1

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

我收到一个 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

我不确定我是否做对了。请让我知道你的想法。

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

4

2 回答 2

1

您应该已将其导入服务器的信任库,而不是其密钥库。

于 2012-10-12T12:55:29.870 回答
0

您必须将证书导入您的证书文件,在 JDK 中是 cacerts 文件。之后,您必须查看证书是否存在于文件中,并且您将在每个客户端上执行此操作。

关于信任库的事情是您创建自己的 JKS 文件。

于 2014-01-15T18:24:16.543 回答