中间根权限交叉链验证

时间:2017-06-25 22:01:39

标签: security ssl x509 pki

我创建了一个根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的证书。我成功地使用我的client2(python客户端)连接到server2。

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

现在,我想知道使用client2是否可以通过添加CA-I1的CA-I1的证书(因为CA-I1和CA-I2来自同一根CA)来连接到server1。 基本上想知道我是否可以跨链认证。

1 个答案:

答案 0 :(得分:1)

  

这是链 - > 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
  

...如果使用client2,我可以通过添加CA-I1的证书(因为CA-I1和CA-I2都来自同一根CA)来连接到server1

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