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


Können Sie sich eine Linux-Befehlszeilenmethode zum Speichern des von einem HTTPS-Server vorgelegten Zertifikats vorstellen? Etwas wie curl / wget / openssl macht eine SSL-Verbindung und speichert den Inhalt des Zertifikats statt des HTTP-Response.

Das gui, das dem entspricht, nach dem ich suche, würde sein, zur HTTPS Site zu grasen, doppelklicken Sie auf das browser "sichere Aufstellungsort" Ikone und exportieren Sie das CERT. Außer das Ziel hier ist, es nicht interaktiv zu machen.

Vielen Dank, Jim


23
2018-04-05 20:00


Ursprung




Antworten:


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 verwende, um das Zertifikat eines SSL-fähigen IMAP- oder POP3-Servers abzurufen (außer natürlich, dass ich Port 443 nicht verwende)

(Beachten Sie, dass "redundant" -servername Parameter ist notwendig zu machen openssl eine Anfrage mit SNI-Unterstützung machen.)


30
2018-04-05 20:08



Sehr hilfreich! Vielen Dank! - Jesse Hallett
Irgendeine Möglichkeit, die volle Kette zu bekommen? - Collin Anderson


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'

6
2018-04-05 20:06