web-dev-qa-db-fra.com

Enregistrer le certificat SSL distant via la ligne de commande Linux

Pouvez-vous penser à une méthode de ligne de commande Linux pour enregistrer le certificat présenté par un serveur HTTPS? Quelque chose dans le sens d'avoir curl/wget/openssl établir une connexion SSL et enregistrer le certificat plutôt que le contenu de la réponse HTTP.

L'équivalent graphique de ce que je recherche serait de naviguer sur le site HTTPS, de double-cliquer sur l'icône "site sécurisé" du navigateur et d'exporter le certificat. Sauf que le but ici est de le faire de manière non interactive.

Merci, Jim

30
Jim

Quelque chose comme:

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

C'est ce que j'utilise avec fetchmail pour récupérer le certificat d'un serveur IMAP ou POP3 compatible SSL (sauf évidemment je n'utilise pas le port 443)

(Notez que "redondant" -servername le paramètre est nécessaire pour que openssl fasse une requête avec le support SNI.)

43
Cry Havok

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'
9
Matt Simmons