Ze strony internetowej możesz:
openssl s_client -showcerts -verify 5 -connect stackexchange.com:443 < /dev/null
To pokaże łańcuch certyfikatów i wszystkie certyfikaty przedstawione przez serwer.
Teraz, jeśli zapiszę te dwa certyfikaty w plikach, mogę użyć 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
Opcja jest używany w celu certyfikat pośredni (y); se.crt
to certyfikat do weryfikacji. Wynik głębokość = 2 pochodzi z zaufanego systemu urzędu certyfikacji.
Jeśli nie masz certyfikatów pośrednich, nie możesz przeprowadzić weryfikacji. Tak właśnie działa X.509.
W zależności od certyfikatu może on zawierać identyfikator URI, z którego można uzyskać półprodukt. Jako przykład openssl x509 -in se.crt -noout -text
zawiera:
Authority Information Access:
OCSP - URI:http://ocsp.digicert.com
CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt
Ten identyfikator URI „wystawców urzędów certyfikacji” wskazuje na pośredni certyfikat (w formacie DER, więc musisz openssl x509 -inform der -in DigiCertSHA2HighAssuranceServerCA.crt -out DigiCertSHA2HighAssuranceServerCA.pem
go przekonwertować do dalszego wykorzystania przez OpenSSL).
Jeśli uruchomisz openssl x509 -in /tmp/DigiCertSHA2HighAssuranceServerCA.pem -noout -issuer_hash
, otrzymasz 244b5494
, którego możesz szukać w głównym systemie CA w sklepie /etc/ssl/certs/244b5494.0
(wystarczy dołączyć .0
do nazwy).
Nie sądzę, że istnieje łatwa, łatwa komenda OpenSSL, która zrobi to wszystko za Ciebie.