中间根权限跨链验证

intermediate root authority cross chain validation

我已经创建了一个根 CA(CA-R) 和两个中间 CA(CA-I1 & CAI2)(都是自签名的)。

我使用 CA-I1 为 server1/client1、CSR 生成了私钥并创建了证书。为 Server1(Apache2) 安装了证书,并且 client1.Im 能够使用我的 client1(python 客户端)成功连接到 server1。

Here is the chain -> client1->server1->CA-I1->root CA

我使用 CA-I2 为 server2/client2、CSR 生成了私钥并创建了证书。为 Server2(Apache2) 和 client2 安装了证书。我能够使用我的客户端 2(python 客户端)成功连接到服务器 2。

Here is the chain -> client2->server2->CA-I2->root CA.

现在,我想知道使用 client2 是否可以通过添加 CA-I1 的证书(因为 CA-I1 和 CA-I2 来自同一个根 CA)连接到 server1 [=23] =] 客户。 主要是想知道能不能跨链认证。

Here is the chain -> client1->server1->CA-I1->root CA

我希望您没有像您的问题所建议的那样使用服务器证书签署客户端证书,而是使用 CA 证书(即 CA-I1、CA-I2)签署客户端证书。否则,这仅在服务器证书既用作服务器身份验证的叶证书又用作 CA 证书以签署客户端证书的情况下才有效。这些不同类型的用例最好不要合并到一个证书中。因此,您实际应该使用的是:

   server1 -> CA-I1 -> root-CA
   client1 -> CA-I1 -> root-CA
   server2 -> CA-I2 -> root-CA
   client2 -> CA-I2 -> root-CA

... if using client2 can I connect to server1 by adding the certs of the CA-I1(as both CA-I1 & CA-I2 are from same Root CA)part of python client

每个客户端和服务器可以信任多个CA,用于客户端和服务器证书验证的证书实际上可以不同。但是,考虑到 server1 信任由根 CA 签署的用于客户端身份验证的任何证书,它将信任 client1 和 client2,前提是构建到根 CA 的信任链所需的所有中间证书都由客户端与叶证书一起发送。这与服务器身份验证没有区别。