Guardar certificado SSL remoto a través de la línea de comandos de Linux

28

¿Se le ocurre algún método de línea de comandos de Linux para guardar el certificado presentado por un servidor HTTPS? Algo similar a tener curl / wget / openssl establece una conexión SSL y guarda el certificado en lugar del contenido de la respuesta HTTP.

La interfaz gráfica de usuario equivalente a lo que estoy buscando sería navegar hasta el sitio HTTPS, hacer doble clic en el icono del "sitio seguro" del navegador y exportar el certificado. Excepto que el objetivo aquí es hacerlo de manera no interactiva.

Gracias Jim


fuente

Respuestas:

40

Algo como:

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

Eso es lo que uso con fetchmail para recuperar el certificado de un servidor IMAP o POP3 con capacidad SSL (excepto que obviamente no uso el puerto 443)

(Tenga en cuenta que el -servernameparámetro "redundante" es necesario para hacer openssluna solicitud con soporte SNI).

Llora Havok
fuente
1
¿Alguna forma de obtener la cadena completa?
Collin Anderson
9

De 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
fuente