На веб-сайті ви можете:
openssl s_client -showcerts -verify 5 -connect stackexchange.com:443 < /dev/null
Це покаже ланцюжок сертифікатів та всі сертифікати, які подав сервер.
Тепер, якщо я збережу ці два сертифікати у файлах, я можу використовувати openssl verify
:
$ openssl verify -show_chain -untrusted dc-sha2.crt se.crt
se.crt: OK
Chain:
depth=0: C = US, ST = NY, L = New York, O = "Stack Exchange, Inc.", CN = *.stackexchange.com (untrusted)
depth=1: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA (untrusted)
depth=2: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
Цей -untrusted
параметр використовується для надання проміжних сертифікатів; se.crt
це сертифікат для підтвердження. Результат глибини = 2 вийшов із надійного сховища системи CA.
Якщо у вас немає проміжних сертифікатів, ви не можете виконати перевірку. Ось так працює X.509
Залежно від сертифіката, він може містити URI для отримання проміжного продукту. Як приклад openssl x509 -in se.crt -noout -text
містить:
Authority Information Access:
OCSP - URI:http://ocsp.digicert.com
CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt
Цей URI "CA Issuers" вказує на проміжний сертифікат (у форматі DER, тому вам потрібно використовувати openssl x509 -inform der -in DigiCertSHA2HighAssuranceServerCA.crt -out DigiCertSHA2HighAssuranceServerCA.pem
його для перетворення для подальшого використання OpenSSL).
Якщо ви запустили, openssl x509 -in /tmp/DigiCertSHA2HighAssuranceServerCA.pem -noout -issuer_hash
ви отримаєте 244b5494
, що ви можете шукати в системному кореневому магазині CA /etc/ssl/certs/244b5494.0
(просто додайте .0
до назви).
Я не думаю, що є приємна, проста команда OpenSSL, щоб зробити все це за вас.