【问题标题】:Why chain of trust is ok with different CA?为什么信任链可以使用不同的 CA?
【发布时间】:2022-01-24 19:55:18
【问题描述】:

我有一个.keystore 文件,Tomcat 的配置是:keystore=.keystoretruststore=.keystore
.keystore 包含一个 PrivateKeyEntry(由 CA1 签名)和一个 trustedCertEntry (CA1)。
到目前为止,一切都还好。
如果在导入服务器证书时 trustedCertEntry 不存在,我会得到:
Failed to establish chain from reply
当我删除 trustedCertEntry (CA1) 时,Tomcat 无法启动,原因是:
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

现在我的问题:当我删除 trustedCertEntry CA1 并导入 trustedCertEntry CA2 时,Tomcat 启动并且证书链(在浏览器中查看)是: CA1 签名的服务器证书。
这怎么可能?我原以为 Tomcat 无法启动,因为 trustedCertEntry (CA2) 与 PrivateKeyEntry 不匹配,因为 PrivateKeyEntry 是从 CA1 发出的,而不是CA2。而且由于没有 trustedCertEntry,Tomcat 无法启动。

【问题讨论】:

    标签: ssl-certificate keystore ca


    【解决方案1】:

    私钥不是由 CA 颁发的。 您的服务器证书是一对公钥和私钥。基于此密钥对创建证书请求,并且此证书请求由 CA1 签名。只要 CA1 在您的浏览器证书存储中的受信任 CA 中,证书在您的浏览器中就有效。

    更改密钥库中的 CA 不会影响服务器证书。

    看起来 SSL 引擎至少需要一个 CA 证书 - 我猜任何导入到 JKS 的 CA 证书(即 thawte.com/roots 或自签名)都适用于您 - JKS 必须具有至少一个。

    【讨论】:

    • 当我从密钥库中删除 CA 时,Tomcat 无法启动。为什么 Tomcat 在密钥库中以 错误 CA 开头?
    • 它看起来像 SSL 引擎的要求 - 我猜任何导入到 JKS 的 CA 证书(即@9​​87654321@,或自签名)都适合你 - JKS 必须至少有一个.
    • 你是对的,我删除了 CA1 和 CA2 并添加了 Thawte 根 CA 和 Tomcat 启动。感谢您指出这一点,只需要一个根 CA,独立于哪个。奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2020-11-06
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多