如果有多条信任路径,应该发送哪些 CA 证书?

如果有多条信任路径,应该发送哪些 CA 证书?

我第一次遇到这个设置:

我的服务器证书由 INTERMEDIATE-CA1 签名,而后者又由 ROOT-CA1 签名。ROOT-CA1 位于我的浏览器/操作系统的信任库中。

话虽如此,ROOT-CA1 也由 ROOT-CA2 签名,后者也在我的浏览器/操作系统的信任库中。

这意味着,在一条信任路径上,ROOT-CA1 是 ROOT-CA(因此不需要由服务器发送),但在另一条信任路径上,ROOT-CA1 必须被视为 INTERMEDIATE-CA2,因此应由服务器发送。

显然,这不能同时实现,因为所选择的信任路径取决于客户端在其信任存储中拥有哪些 ROOT-CA。

所以我基本上要问两个问题:

  1. 哪种方法才是处理这种情况的正确方法?我的感觉是,作为服务器,我也应该发送 ROOT-CA1 证书,但我没有 RFC 依据
  2. 哪些是与 TLS 链验证相关的 RFC?

答案1

TLS 服务器根本不应发送根证书。简单明了。您需要发送叶证书(TLS 证书)和非根中间证书(如果有)。这解决了您这边的所有问题。

顺便说一句,证书仅由一个 CA 签名,证书中只有一个Issuer字段。并且写在那里的 CA 是颁发者。另一个 CA 可以交叉签名证书,但不支持对叶证书进行交叉签名,因为您发送的是具有特定颁发者的证书,因此交叉签名者不会与链匹配。

相关内容