Obwohl ich Aris Antwort zustimme (und sie positiv bewertet habe :), musste ich einen zusätzlichen Schritt tun, damit es mit Java unter Windows funktioniert (wo es bereitgestellt werden musste):
openssl s_client -showcerts -connect www.example.com:443 < /dev/null | openssl x509 -outform DER > derp.der
Vor dem Hinzufügen von openssl x509 -outform DER
Konvertierung, erhielt ich eine Fehlermeldung von keytool unter Windows, die sich über das Format des Zertifikats beschwerte. Das Importieren der .der-Datei funktionierte einwandfrei.
Es stellt sich heraus, dass hier mehr Komplexität herrscht:Ich musste viel mehr Details angeben, um das ins Rollen zu bringen. Ich denke, es hat etwas mit der Tatsache zu tun, dass es sich um eine Verbindung handelt, die eine Client-Authentifizierung erfordert, und der Hankshake benötigte mehr Informationen, um mit der Phase fortzufahren, in der die Zertifikate abgelegt wurden.
Hier ist mein Arbeitsbefehl:
openssl s_client -connect host:port -key our_private_key.pem -showcerts \
-cert our_server-signed_cert.pem
Hoffentlich ist dies ein Schubs in die richtige Richtung für alle, die mehr Informationen gebrauchen könnten.
Ein Einzeiler zum Extrahieren des Zertifikats von einem Remote-Server im PEM-Format, diesmal mit sed
:
openssl s_client -connect www.google.com:443 2>/dev/null </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Mit SNI
Wenn der Remote-Server SNI verwendet (d. h. mehrere SSL-Hosts auf einer einzigen IP-Adresse gemeinsam nutzt), müssen Sie den richtigen Hostnamen senden, um das richtige Zertifikat zu erhalten.
openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null
Ohne SNI
Wenn der Remote-Server kein SNI verwendet, können Sie -servername
überspringen Parameter:
openssl s_client -showcerts -connect www.example.com:443 </dev/null
Um die vollständigen Details des Zertifikats einer Site anzuzeigen, können Sie auch diese Befehlskette verwenden:
$ echo | \
openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | \
openssl x509 -text