2013-06-13 77 views
8

我拥有来自CA的公共证书。我想使用此证书创建Java SSL连接。我提到了How can I use different certificates on specific connections?Java SSL connection with self-signed certificate without copying complete keystore to client。从这我明白,我需要将证书导入密钥库。不过,我还没有收到CA的任何密钥库。我创建了一个密钥库,并试图将公共证书导入到它。但后来我得到以下错误:将公共证书导入密钥库时出错

的keytool错误:java.lang.Exception的:公钥答复和密钥库不匹配

我是否需要从CA密钥库还是我做错了什么?用于创建密钥存储


命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks 

使用的命令导入证书:

keytool -import -v -alias tomcat -file signed-cert.pem -keystore keystore.jks 
+0

你可以请更具体一点吗?您使用哪个命令创建密钥库,以及如何导入证书? –

+0

命令创建密钥库: 的keytool -genkey -alias tomcat的-keyalg RSA -keystore keystore.jks 命令导入证书: 的keytool -import -v -alias tomcat的-file签署-cert.pem -keystore密钥库。 jks – DanMatlin

+0

@Zeutheus你有没有找到一种方法来完成这项工作?我面临类似的问题,上述问题的解决方案将有所帮助。 – themanwhosoldtheworld

回答

5

我想你是不是正确遵循登入过程证书。结帐讨论https://forums.oracle.com/thread/1533940到按以下步骤正确地实现它们:

  1. 创建密钥库 keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (这会产生一个密钥,并用“的myKey”的别名键(DC))

  2. 创建证书签名请求(CSR)。 keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (这会产生一个文本CSR文件)

  3. 已经产生了签名的证书:http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. 进口签名证书 (注意CRLFs如果粘贴从第3步签名的证书) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (重要这有一个不同于步骤1的别名(默认为“mykey”)?

  5. 导出用于客户端使用的公钥 keytool -export -alias mykey -file test.publickey -keystore test.keystore

在服务器系统

  • 创建信任 keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 (这会产生一个密钥库,并用 “的myKey” 的别名的密钥(DC))

  • 通过客户端 keytool -import -file test.publickey -keystore test.truststore

    测试SSL SOAP服务 -
  • 导入公钥

    问题是让步骤1和6中的别名默认为“mykey”。 当我改变了第6步是: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

    可以导入使用上述步骤7(虽然我没有在STEP 7中添加 “-alias apublickey”)。 这对我有用。

  • 0

    我在导入密钥库中的SSL证书时遇到了同样的问题。在我的情况下,根CA的证书从链中失踪。我将根证书导出到一个文件中并手动导入密钥库中。

    相关问题