我有一个PKI层次结构,如下所示。
root-ca ---> signing-ca ---> sub-ca-1 ---> server-cert-1 (machine 1)
\
\--------> sub-ca-2 ---> server-cert-2 (machine 2)
我想知道如何在每台机器上设置CA.例如,我在机器1上创建了一个包。
$ cat sub-ca-1.pem signing-ca.pem root-ca.pem > cas-1.pem
cas-1.pem可以验证server-cert-1,但无法验证server-cert-2。 因此,如果机器1和2需要相互认证,它将失败。
逻辑上,我认为正确的方法是机器1(和2)的证书应该占用sub-ca,CA应该从签署ca开始到root-ca(如下所示)。
$ cat server-cert-1.pem sub-ca-1.pem > server-1.pem
$ cat signing-ca.pem root-ca.pem > cas.pem
但是当我验证时,它失败了。
$ openssl verify -CAfile cas.pem server-1.pem
我不确定其他SSL程序如何验证证书。
无论如何,在这种情况下,如何在每台机器上设置CA和证书,以便验证可以通过。
非常感谢。
答案 0 :(得分:2)
将root-ca或signed-ca添加到客户端上的CA存储(例如,可信CA列表)应该足够了。在ssl握手期间,服务器需要发送链的其余部分,以便客户端可以将证书验证到可信CA.