将公共证书导入密钥库时出错

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 的证书。我将根证书导出到一个文件中,然后手动导入到密钥库中。

【讨论】:

以上是关于将公共证书导入密钥库时出错的主要内容,如果未能解决你的问题,请参考以下文章

fastlane - 克隆证书存储库时出错

码头:初始化密钥库时出错

使用多个读卡器加载 PKCS 密钥库时出错

c++ 中的嵌入式 python 代码 - 导入 python 库时出错

读取 X.509 密钥或证书文件时出错:解析时出错

添加应用内计费库时出错