Java密钥库中的中间CA证书

时间:2013-10-18 15:35:55

标签: java ssl

My Dev OPs团队希望在我们的Java密钥库中使用中级CA证书。我认为在密钥库中添加中间证书与添加“常规证书”的过程相同,对吗?我需要注意哪些“陷阱”?另外,如何在测试中验证Java是否使用中间证书而不是使用CA进行检查?

2 个答案:

答案 0 :(得分:9)

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

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

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

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

为此,您需要确保S及其私钥的条目包含它需要发送的链(S,CA_2),而不仅仅是证书S.在密钥库中的单独条目中导入CA_2将不会在呈现证书S时,JSSE为您构建链。

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

答案 1 :(得分:6)

按顺序回答您的问题:

  

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

是。例如,请参阅this VMWare documentation on installing intermediate CA's

  

我需要注意哪些“陷阱”?

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

  

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

如果您只想验证它没有检查根CA,那么就不要安装它,并且您知道它无法使用。

更新:回应@Bruno的评论,可以指出这个答案只能解决问题中提出的问题。我在这里假设已经处理了围绕信任和证书分发的问题,以及首先拥有中间CA的正常原因,并且这是期望的解决方案。有关这些问题的更多信息,请查看Bruno's answer