Wie kann ich SSL-Zertifikate in der Befehlszeile überprüfen?

52

Ich versuche zu überprüfen, ob der hier gespeicherte RSA-Schlüssel, das CA-Bundle und das Zertifikat in Ordnung sind. Sie werden nicht von einem Webserver bedient. Wie kann ich sie überprüfen?

Xenoterracid
quelle
Schauen Sie sich den openssl x509manuellen Abschnitt an.
Alex
Das OpenSSL Verify- Handbuch kann Ihnen hier weiterhelfen. Auf dieser Seite finden Sie auch einige hervorragende Beispiele.
Stefan Lasiewski

Antworten:

61

Angenommen, Ihre Zertifikate liegen im PEM-Format vor, können Sie Folgendes tun:

openssl verify cert.pem

Wenn Ihr "ca-Bundle" eine Datei ist, die zusätzliche Zwischenzertifikate im PEM-Format enthält:

openssl verify -untrusted ca-bundle cert.pem

Wenn Ihr openssl nicht so eingerichtet ist, dass automatisch ein Satz installierter Stammzertifikate verwendet wird (z. B. in /etc/ssl/certs), können Sie die Zertifizierungsstelle mit -CApathoder -CAfileangeben.

Andy
quelle
9
Achtung, der Befehl openssl verify ist freizügiger als erwartet! Zusätzlich zur Überprüfung der angegebenen CA-Datei wird standardmäßig auch nach übereinstimmenden CAs im Zertifikatsverzeichnis des Systems gesucht, z. B. / etc / ssl / certs. Um dieses Verhalten zu verhindern und sicherzustellen, dass Sie mit Ihrem von CAfile angegebenen CA-Zertifikat abgleichen, müssen Sie auch die Option -CApath mit einem nicht vorhandenen Verzeichnis übergeben, z. B .: openssl verify -verbose -CApath nosuchdir -CAfile cacert.pem server .crt
DSimon
2
Eine weitere Einschränkung: Wenn Sie diese -CApath nosuchdirOption verwenden, muss die Kombination aus server.crt und cacert.pem die Stammzertifizierungsstelle enthalten. Wenn openssl mit diesen Dateien nur bis zu einer Zwischenzertifizierungsstelle arbeiten kann, wird es sich beschweren.
DSimon
Es heißt keine solche Datei in /certs/. Wird dies ein Problem verursachen? Weil ich in einer Situation gestapelt bin, in der mein Server funktioniert, funktioniert http curl, aber https .. curl wird fehlerhaft. wo die Website nicht mehr funktioniert.
Giorgi Gvimradze
18

Hier ist ein Einzeiler, um eine Zertifikatskette zu überprüfen:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

Hierfür muss keine CA installiert werden.

Weitere Informationen finden Sie unter https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work .

Vadzim
quelle
1
Achtung, die Option -CAfile ist zulässiger als erwartet. Siehe meinen Kommentar zur akzeptierten Antwort für Details.
DSimon
1
@DSimon, ich habe dies hinzugefügt, um -CApath nosuchdirzu antworten. Danke.
Vadzim
Kein Problem, wir helfen Ihnen gerne weiter. :-) Eine Einschränkung, die ich herausgefunden habe, nachdem ich meinen früheren Kommentar gepostet habe: Wenn die mit angegebene Datei -CAfileselbst nur ein Zwischenzertifikat ist, wird openssl sich beschweren. Dies ist ein korrektes Verhalten, da verifyes eine vollständige Kette bis zu einer Stammzertifizierungsstelle erfordert, jedoch irreführend sein kann.
DSimon
2
Für meine Version ( OpenSSL 1.1.1 11 Sep 2018) muss das Argument -CApathein vorhandenes Verzeichnis sein.
Jake Cobb