【问题标题】:Intermediate CA certificate in Java keystoreJava 密钥库中的中间 CA 证书
【发布时间】:2013-10-27 12:36:15
【问题描述】:

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

【问题讨论】:

    标签: java ssl


    【解决方案1】:

    按顺序回答您的问题:

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

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

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

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

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

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

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

    【讨论】:

    • 实际上有一些问题需要注意,别名命名是最不关心的问题。不确定这与“联系 CA”有什么关系。证书吊销使用与 CA 的在线连接,而构建受信任的证书链则不需要。
    • @Bruno 关于“联系 CA”,你说得对……不知道那个脑屁是从哪里来的。固定的。您是正确的,在查看信任链设置时还有其他问题需要考虑,但是在处理 Jay 提出的唯一问题时,可以忽略这些问题。但是,我将添加一个声明来指出它们被忽略了。
    【解决方案2】:

    您需要根据证书链进行推理。中间 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 时为您构建链。

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

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 2011-07-25
      • 2019-05-12
      • 1970-01-01
      • 2014-03-11
      • 2014-02-12
      • 2015-01-01
      • 2017-02-05
      相关资源
      最近更新 更多