285 votes

comment télécharger le certificat ssl d'un site web ?

Je veux télécharger le certificat ssl à partir de, par exemple https://www.google.com en utilisant wget ou toute autre commande. Une ligne de commande unix ? wget ou openssl ?

401voto

Sean Reifschneider Points 10110

Afin de télécharger le certificat, vous devez utiliser le client intégré à openssl comme suit :

echo -n | openssl s_client -connect $HOST:$PORTNUMBER -servername $SERVERNAME \
    | openssl x509 > /tmp/$SERVERNAME.cert

Cela permettra d'enregistrer le certificat dans /tmp/$SERVERNAME.cert .

El -servername est utilisé pour sélectionner le bon certificat lorsque plusieurs sont présentés, dans le cas de SNI.

Vous pouvez utiliser -showcerts si vous voulez télécharger tous les certificats de la chaîne. Mais si vous voulez seulement télécharger le certificat du serveur, il n'est pas nécessaire de spécifier -showcerts . Le site x509 à la fin supprimera les certitudes intermédiaires, vous devrez utiliser sed -n '/-----BEGIN/,/-----END/p' au lieu du x509 à la fin.

echo -n donne une réponse au serveur, de sorte que la connexion est libérée.

openssl x509 supprime les informations sur la chaîne de certificats et les détails de la connexion. C'est le format préféré pour importer le certificat dans d'autres keystores.

89voto

RainDoctor Points 4022

J'ai trouvé la réponse. Openssl la fournit.

openssl s_client -connect ${REMHOST}:${REMPORT}

34voto

user8032 Points 758

El GNUTLS outil client, gnutls-cli peut également faciliter les choses :

gnutls-cli --print-cert www.example.com \
        < /dev/null \
        > www.example.com.certs

Le programme est conçu pour fournir un client interactif au site, vous devez donc lui donner des entrées vides (dans cet exemple, de la part de /dev/null ) pour mettre fin à la session interactive.

25voto

ThorSummoner Points 311
true | openssl s_client -connect google.com:443 2>/dev/null | openssl x509

ce mode d'openssl attend stdin, donc nous le fournissons par l'intermédiaire de true | ce qui permet de se connecter au serveur spécifié dans le paramètre -connect. 2>/dev/null supprime les erreurs (facultatif), nous pouvons passer la sortie entière dans l'analyseur x509, en spécifiant /dev/stdin pour utiliser le tube Shell comme fichier d'entrée. Et cela produira juste le -----BEGIN CERTIFICATE----- a -----END CERTIFICATE----- partie de la s_client sortie. Vous pouvez rediriger cela vers un fichier en ajoutant > google.com.pem à la fin de la commande.


D'après ce que je sais, cela ne vérifie pas la chaîne de certificats, mais seulement l'identité ssl fournie par le serveur final.

12voto

code_burgar Points 6845

Basé sur la réponse de @bignose, voici une version autonome qui s'intègre bien dans une recette de chef par exemple :

sudo apt-get install gnutls-bin 
gnutls-cli --print-cert myserver.com </dev/null| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > myserver.crt
sudo cp myserver.crt /usr/local/share/ca-certificates/myserver.crt
sudo update-ca-certificates

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X