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

Import Certificates into keystore, certificate chain is null

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

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

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

但是每次访问keystore.getCertificateChainreturnsnull.

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

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

我们哪里做错了?我们是否必须明确设置证书链?如何 我们能否获得详细信息,getCertificateChain 中的哪一步失败了?

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