Zapisz zdalny certyfikat SSL za pomocą wiersza polecenia systemu Linux

28

Czy potrafisz wymyślić jakąkolwiek metodę linuksową do zapisywania certyfikatu przedstawionego przez serwer HTTPS? Coś w stylu curl / wget / openssl tworzy połączenie SSL i zapisuje certyfikat zamiast treści odpowiedzi HTTP.

Odpowiednikiem GUI dla tego, czego szukam, byłoby przejście do strony HTTPS, dwukrotne kliknięcie ikony „bezpieczna strona” przeglądarki i wyeksportowanie certyfikatu. Oprócz tego, że celem jest zrobienie tego w sposób nieinteraktywny.

Dzięki, Jim


źródło

Odpowiedzi:

40

Coś jak:

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

Tego właśnie używam z fetchmailem, aby pobrać certyfikat serwera IMAP lub POP3 obsługującego SSL (oczywiście, że nie używam portu 443)

(Należy pamiętać, że -servernameparametr „redundantny” jest konieczny, aby opensslwykonać żądanie z obsługą SNI.)

Cry Havok
źródło
1
Jest jakiś sposób na uzyskanie pełnego łańcucha?
Collin Anderson,
9

Od 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
źródło