Auf einer Website können Sie Folgendes tun:
openssl s_client -showcerts -verify 5 -connect stackexchange.com:443 < /dev/null
Daraufhin werden die Zertifikatskette und alle vom Server präsentierten Zertifikate angezeigt.
Wenn ich diese beiden Zertifikate in Dateien speichere, kann ich Folgendes verwenden 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
Mit dieser -untrusted
Option werden die Zwischenzertifikate ausgegeben. se.crt
ist das zu überprüfende Zertifikat. Das Ergebnis depth = 2 stammt aus dem vertrauenswürdigen CA-Speicher des Systems.
Wenn Sie nicht über die Zwischenzertifikate verfügen, können Sie die Überprüfung nicht durchführen. So funktioniert X.509.
Abhängig vom Zertifikat kann es einen URI enthalten, von dem das Zwischenprodukt abgerufen werden kann. Als Beispiel openssl x509 -in se.crt -noout -text
enthält:
Authority Information Access:
OCSP - URI:http://ocsp.digicert.com
CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2HighAssuranceServerCA.crt
Dieser URI "CA Issuers" verweist auf das Zwischenzertifikat (im DER-Format, sodass Sie openssl x509 -inform der -in DigiCertSHA2HighAssuranceServerCA.crt -out DigiCertSHA2HighAssuranceServerCA.pem
es zur weiteren Verwendung durch OpenSSL konvertieren müssen).
Wenn Sie ausführen, erhalten openssl x509 -in /tmp/DigiCertSHA2HighAssuranceServerCA.pem -noout -issuer_hash
Sie 244b5494
, nach was Sie im Stammzertifizierungsstellenspeicher des Systems suchen können /etc/ssl/certs/244b5494.0
(fügen Sie einfach .0
den Namen hinzu).
Ich glaube nicht, dass es einen netten, einfachen OpenSSL-Befehl gibt, der das alles für Sie erledigt.