Speichern Sie das Remote-SSL-Zertifikat über die Linux-Befehlszeile

28

Können Sie sich eine Linux-Befehlszeilenmethode zum Speichern des von einem HTTPS-Server präsentierten Zertifikats vorstellen? Etwas in der Art von curl / wget / openssl stellt eine SSL-Verbindung her und speichert das Zertifikat und nicht den Inhalt der HTTP-Antwort.

Das GUI-Äquivalent zu dem, wonach ich suche, ist, zur HTTPS-Site zu navigieren, auf das Symbol "Sichere Site" des Browsers zu doppelklicken und das Zertifikat zu exportieren. Außer das Ziel ist es hier, es nicht interaktiv zu machen.

Danke, Jim


quelle

Antworten:

40

So etwas wie:

openssl s_client -servername remote.server.net -connect remote.server.net:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/path/to/certificate.pem

Das ist, was ich mit fetchmail benutze, um das Zertifikat eines SSL-fähigen IMAP- oder POP3-Servers abzurufen (außer natürlich, dass ich Port 443 nicht benutze).

(Beachten Sie, dass der -servernameParameter "redundant" erforderlich ist, um openssleine Anfrage mit SNI-Unterstützung zu stellen.)

Schrei Havok
quelle
1
Wie kann man die gesamte Kette erreichen?
Collin Anderson
9

Von http://www.madboa.com/geek/openssl/#cert-retrieve

#!/bin/sh
#
# usage: retrieve-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}

echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Matt Simmons
quelle