8

我的 Dev OPs 团队想在我们的 Java 密钥库中使用中间 CA 证书。我相信在密钥库中添加中间证书与添加“常规证书”的过程相同,对吗?有什么我需要注意的“陷阱”吗?另外,我如何在测试中验证 Java 使用的是中间证书,而不是使用 CA 进行检查?

4

2 回答 2

12

您需要根据证书链进行推理。中间 CA 证书的目标是让远程方在最终实体证书(例如服务器或客户端证书本身)和另一个 CA 证书之间建立一个链。

如果您正在谈论将此中间 CA 证书导入将用作信任库的密钥库,那么该 CA 证书是中间证书还是“根”CA 证书并不重要:它将成为一个受信任的锚点,例如另一个用于使用该信任库的应用程序。

如果您正在谈论用作密钥库的密钥库,则需要确保您的 EEC 将与正确的链一起显示。

例如,假设 CA_1 为 CA_2 颁发证书,CA_2 为服务器 S 颁发证书。您的客户端在其受信任的锚点中有证书 CA_1(但不一定是 CA_2):您需要提供一个链“S,CA_2”,这样他们就可以通过 CA_2 验证链(否则,他们将不知道如何将 CA_1 链接到 S)。

为此,您需要确保 S 及其私钥的条目包含它需要发送的链(S,CA_2),而不仅仅是证书 S。在密钥库中的单独条目中导入 CA_2 不会生成 JSSE出示证书 S 时为您提供的链条。

此答案中描述了如何执行此操作(尽管这是从客户证书的角度来看的)。

于 2013-10-25T13:49:45.693 回答
6

按顺序回答您的问题:

我相信在密钥库中添加中间证书与添加“常规证书”的过程相同,对吗?

是的。例如,请参阅有关安装中间 CA 的 VMWare 文档

有什么我需要注意的“陷阱”吗?

只有每个中间 CA 需要它自己的别名。

另外,我如何在测试中验证 Java 使用的是中间证书,而不是使用 CA 进行检查?

如果你只是想验证它不检查根CA,那么就不要安装它,你就知道它不能使用。

更新:针对@Bruno 的评论,公平地说,这个答案只解决了问题中提出的问题。我在这里假设围绕信任和证书分发的问题,首先拥有中间 CA 的正常原因,已经得到处理,这是理想的解决方案。有关这些问题的更多信息,您应该查看Bruno 的回答

于 2013-10-25T07:31:59.260 回答