Как работает цепочка цепочек сертификатов SSL?
Я создал цепочку иерархии, как это.
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
Ответы
Ответ 1
Первоначальный заказ на самом деле обратный. Сертификаты должны сопровождаться выдающим сертификатом до тех пор, пока последний сертификат не будет выпущен известным корнем за IETF RFC 5246 Раздел 7.4.2
Это последовательность (цепочка) сертификатов. Сертификат отправителя ДОЛЖЕН прийти первым в списке. Каждый следующий сертификат ДОЛЖЕН прямо удостоверяйте личность, предшествующую ей.
См. также SSL: ошибка: 0B080074: процедуры проверки x509: X509_check_private_key: несоответствие значений ключей для устранения неполадок.
Но я до сих пор не знаю, почему они написали спецификацию, так что порядок имеет значение.
Ответ 2
Вам нужно использовать openssl pkcs12 -export -chain -in server.crt -CAfile ...
См. https://www.openssl.org/docs/apps/pkcs12.html