我的 Dev OPs 团队想在我们的 Java keystore 中使用中间 CA 证书。我相信将中间证书添加到 keystore 与添加“常规证书”的过程相同,对吗?有什么我需要注意的“陷阱”吗?另外,我如何在测试中验证 Java 正在使用中间证书,而不是通过 CA 进行检查?
最佳答案
你需要从证书链的角度来推理。中间 CA 证书的目标是让远程方在终端实体证书(例如服务器或客户端证书本身)和链上游的另一个 CA 证书之间建立链。
如果您正在谈论将此中间 CA 证书导入将用作信任库的 keystore ,那么该 CA 证书是中间证书还是“根”CA 证书并不重要:它将成为一个与使用该信任库的应用程序的另一个信任 anchor 一样。
如果您谈论的是用作 keystore 的 keystore ,则需要确保您的 EEC 将与正确的链一起呈现。
例如,假设 CA_1 为 CA_2 颁发证书,CA_2 为服务器 S 颁发证书。 您的客户在其受信任的 anchor 中拥有证书 CA_1(但不一定是 CA_2):您需要提供一条链“S,CA_2”,以便他们可以通过 CA_2 验证该链(否则,他们将不知道如何链接CA_1 到 S)。
为此,您需要确保 S 的条目及其私钥包含它需要发送的链(S,CA_2),而不仅仅是证书 S。在您的 keystore 中的单独条目中导入 CA_2 不会JSSE 在出示证书 S 时为您构建链。
this answer 中描述了如何执行此操作(尽管这是从客户端证书的角度来看的)。
关于java - Java keystore 中的中间 CA 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453523/