我已经创建了这样的链层次结构。
root-ca ==> signing-ca ==> subordinate-ca ==> server
提到创建链束时,最低的应该首先放置。
$ cat server.crt subordinate-ca.crt signing-ca.crt > server.pem
但是验证失败了。
$ openssl verify -CAfile root-ca.crt server.pem
error 20 at 0 depth lookup:unable to get local issuer certificate
然而,如果我改变顺序,它似乎能够工作。
$ cat signing-ca.crt subordinate-ca.crt server.crt > server.pem
$ openssl verify -CAfile root-ca.crt server.pem
server.pem: OK
那么这里会有什么错误?
“cat”之后的链看起来像下面这样。
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
更多信息:根据"http://www.herongyang.com/crypto/openssl_verify_2.html"的说法,我执行了以下测试,它有效。
$ cat signing-ca.crt subordinate-ca.crt > inter.crt
$ openssl verify -CAfile root-ca.crt -untrusted inter.crt server.crt
server.crt: OK
那是否意味着所有链接都是好的?
好的,我最终发现这无法通过OpenSSL命令行完成(或者至少不容易)。http://openssl.6102.n7.nabble.com/check-certificate-chain-in-a-pem-file-td43871.html