Я создал цепочку иерархии, как это.
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