将公共证书导入密钥库时出错
Posted
技术标签:
【中文标题】将公共证书导入密钥库时出错【英文标题】:Error while Importing public certificate to a keystore 【发布时间】:2013-06-09 14:31:55 【问题描述】:我有来自 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
【问题讨论】:
你能再具体一点吗?您使用哪个命令来创建密钥库以及如何导入证书? 创建密钥库的命令:keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks 导入证书的命令:keytool -import -v -alias tomcat -file signed-cert.pem -密钥库 keystore.jks @Zeutheus 你有没有找到一种方法来完成这项工作?我面临着类似的问题,上述问题的解决方案会有所帮助。 我做错了。首先,您创建一个密钥库。然后从这个密钥库中提取公钥。将此公钥发送给您的 CA。当他们发回签名证书时,您可以将其成功导入您的密钥库 【参考方案1】:我认为您没有正确遵循证书登录过程。查看此讨论 https://forums.oracle.com/thread/1533940 以按照以下步骤正确实施它们:
创建密钥库
keytool -genkey -keyalg RSA -keystore test.keystore -validity 360
(这会生成一个密钥库和一个别名为“mykey”的密钥 (DC))
创建证书签名请求 (CSR)。
keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore
(这会生成一个文本 CSR 文件)
已生成签名证书:http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html
导入的签名证书
(如果粘贴第 3 步中的签名证书,请注意 CRLF)
keytool -import -alias newkey -file <signed cert file> -keystore test.keystore
(重要的是,这有一个不同于步骤 1 的别名(默认为“mykey”)?
导出公钥供客户端使用
keytool -export -alias mykey -file test.publickey -keystore test.keystore
在服务器系统上
创建信任库
keytool -genkey -keyalg RSA -keystore test.truststore -validity 360
(这会生成一个密钥库和一个别名为“mykey”的密钥 (DC))
导入公钥 - 用于通过客户端测试 SSL SOAP 服务
keytool -import -file test.publickey -keystore test.truststore
问题是让第 1 步和第 6 步中的别名默认为“mykey”。
当我将第 6 步更改为:
keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360
您可以使用上面的第 7 步进行导入(尽管我在第 7 步中添加了“-alias apublickey
”)。
这对我有用。
【讨论】:
【参考方案2】:您可以使用keyStore explorer gui 工具生成密钥库/证书以及将证书导入/导出到密钥库。
【讨论】:
【参考方案3】:请将别名从 tomcat 更改为任何其他别名,因为您对 Keystore -genkey 使用相同的别名
【讨论】:
我犯了同样的错误。该错误消息很荒谬。谢谢:D【参考方案4】:我在密钥库中导入 SSL 证书时遇到了同样的问题。在我的情况下,链中缺少根 CA 的证书。我将根证书导出到一个文件中,然后手动导入到密钥库中。
【讨论】:
以上是关于将公共证书导入密钥库时出错的主要内容,如果未能解决你的问题,请参考以下文章