将证书导入密钥库,证书链为空

时间:2016-06-24 06:36:21

标签: java ssl certificate keystore keytool

我们目前正在开发一个与客户端进行通信的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)来规则 out,原来的pem文件已损坏,但没有任何变化。

我们哪里出错了?我们是否必须明确设置证书链?怎么样 我们可以获得详细信息,getCertificateChain中的哪一步失败了吗?

1 个答案:

答案 0 :(得分:2)

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