【问题标题】:Import Certificates into keystore, certificate chain is null将证书导入密钥库,证书链为空
【发布时间】:2016-10-26 16:43:09
【问题描述】:

我们目前正在开发一个 java 客户端应用程序,它与 服务器通过 ssl 安全连接。我们的设计要求服务器 使用受信任的证书对客户端进行身份验证。这 证书链如下所示:

<SOME CA Root certificate>
+- <SOME CA Intermediate certificate>
   +- <Our companies certificate>

最初,我们认为这很简单:生成一个任意的空密钥库, 导入 CA-root、CA-intermediate,最后导入我们自己的证书,分发 客户端之间的这个密钥库并完成。为此,我们使用了 pem 文件 包含签名的公钥。导入我们告诉的 CA-Root-Key 将其标记为受信任的密钥库。

但是,每次访问 keystore.getCertificateChain 都会返回 null

我们已通过 keytoolKeyStoreExplorer 检查所有证书 按预期在密钥库中可用(它们是),而且, 相应主题的密钥标识符和权限密钥匹配(它们匹配)。我们 还确保导入以正确的顺序完成:第一个 CA, 然后是中级证书,然后是我们公司的证书。

我们去了我们自己的公司网站(firefox 说,证书是 好)并从那里下载整个证书链(作为pem)来统治 出,原来的 pem 文件已损坏,但没有任何变化。

我们哪里出错了?我们是否必须明确设置证书链?如何 我们可以获取详细信息,getCertificateChain 中的哪个步骤失败了?

【问题讨论】:

    标签: java ssl certificate keystore keytool


    【解决方案1】:

    您需要将链的根证书导入为受信任的 CA 证书。不是整个链条。而KeyStore.getCertificateChain() 仅适用于私钥条目,而这不是。

    【讨论】:

    • 谢谢你,这帮助很大!这就是为什么我找不到解决方案