Java密钥库中的中间CA证书

Java密钥库中的中间CA证书,java,ssl,Java,Ssl,我的开发运营团队希望在Java密钥库中使用中间CA证书。我相信将中间证书添加到密钥库与添加“常规证书”的过程相同,对吗?我有什么需要注意的“陷阱”吗?另外,我如何在测试中验证Java是否正在使用中间证书,而不是通过CA检查?依次回答您的问题: 我相信将中间证书添加到密钥库与添加“常规证书”的过程相同,对吗 对。例如,请参见 我有什么需要注意的“陷阱”吗 只是每个中间CA都需要自己的别名 另外,我如何在测试中验证Java使用的是中间证书,而不是通过CA进行检查 如果您只是想验证它没有检查根CA,那

我的开发运营团队希望在Java密钥库中使用中间CA证书。我相信将中间证书添加到密钥库与添加“常规证书”的过程相同,对吗?我有什么需要注意的“陷阱”吗?另外,我如何在测试中验证Java是否正在使用中间证书,而不是通过CA检查?

依次回答您的问题:

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

对。例如,请参见

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

只是每个中间CA都需要自己的别名

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

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


更新:对于@Bruno的评论,可以公平地指出,这个答案只针对问题中提出的问题。在这里,我假设围绕信任和证书分发的问题已经得到了解决,这是拥有中间CA的正常原因,这是理想的解决方案。有关这些问题的更多信息,请参阅。

您需要根据证书链进行推理。中间CA证书的目标是让远程方在最终实体证书(例如服务器或客户端证书本身)和链上的另一个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时为您构建链


如何做到这一点在中进行了描述(尽管这是从客户端证书的角度进行的)。

实际上有一些问题需要注意,别名命名是最不重要的问题。不确定这些与“联系CA”有什么关系。证书吊销使用到CA的在线连接,而构建可信证书链则没有。@Bruno关于“联系CA”,你说得对……不确定大脑屁是从哪里来的。固定的。你是正确的,当考虑信任设置链时还有其他问题要考虑,但是当处理杰伊所问的唯一问题时,这些问题可以被忽略。然而,我将补充一项声明,指出它们正被忽视。