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

4
我们目前正在开发一个Java客户端应用程序,通过SSL安全连接与服务器通信。我们的设计要求服务器使用受信任的证书对客户端进行身份验证。证书链如下所示:
<SOME CA Root certificate>
+- <SOME CA Intermediate certificate>
   +- <Our companies certificate>

起初,我们认为这很简单:生成一个任意的空密钥库,导入CA根证书、CA中间证书和最后我们自己的证书,将此密钥库分发给客户端即可。为此,我们使用包含已签名公钥的pem文件。导入CA根密钥时,我们告诉密钥库将其标记为可信任。

然而,每次访问 keystore.getCertificateChain 都返回 null

我们通过 keytoolKeyStoreExplorer 进行了检查,发现所有证书都按预期在密钥库中可用(它们确实存在),并且各自主题和颁发者密钥的标识符匹配(它们确实匹配)。我们还确保导入的顺序是正确的:先是CA,然后是中间证书,最后是我们公司的证书。

我们前往我们自己公司的网站(Firefox显示证书有效)并从那里下载了整个证书链(作为pem文件),以排除原始pem文件损坏的可能性,但仍然没有变化。

我们错在哪里了?我们是否必须显式设置证书链?如何获取有关 getCertificateChain 中哪个步骤失败的详细信息?

1个回答

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

谢谢,这帮了我很多!这就是为什么我找不到解决方案的原因。 - Nina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接