У мене є три сертифікати в ланцюжку:
- root.pem
- проміжний.пем
- john.pem
Коли я їх розглядаю, openssl x509 -in [filename] -text -noout
вони виглядають добре, root.pem виглядає так, що він підписаний самостійно (Issuer == Subject), а Тема кожного сертифіката є Емітентом наступного, як очікувалося.
І справді я можу перевірити ланцюжок до проміжного сертифіката:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
Однак john.pem не вдається:
$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate
Наскільки мені відомо, це означає, що openssl не в змозі знайти емітента для intermediate.pem. Що не має сенсу, оскільки root.pem справді є емітентом для intermediate.pem.
Що я пропускаю?
Редагувати: Спочатку я опублікував відповідь, в якій говорилося, що root.pem і intermediate.pem повинні бути об'єднані в один файл, а потім слід використовувати цей файл як параметр -CAfile
. Це WRONG, оскільки це неявно довіряє intermediate.pem, як вказує Йоханнес Піл . Прочитайте посилання, яке він опублікував у моїй видаленій відповіді: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html