openssl : Récupérer un certificat distant
Le script suivant permet de récupérer le contenu du certificat du site indiqué en paramètre (le port est facultatif, par défaut le port 443 est utilisé).
$ cat getCertificates.sh
#!/bin/sh
HOST=$1
PORT=${2:-443}
echo | \
openssl s_client -connect ${HOST}:${PORT} 2>&1 | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
exit 0
$
On l'exécute en lui indiquant en paramètre le nom du site et le port (facultatif).
$ ./getCertificates.sh youtube.fr 443
-----BEGIN CERTIFICATE-----
MIIF/DCCBWWgAwIBAgIKKZeNqAABAACBuDANBgkqhkiG9w0BAQUFADBGMQswCQYD
VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu
...
Xl7/nc7F5HgE0c+bGsAYuCoYBsDNYs8/AUTnSTeih8U9mSRRDFb9NxMkQqUWPSXO
sh4FktaXQJBJRi4IAfuUDk28c9A0Bv1ygO3FqiSu6QJ3axESCoGmF26XqDwvJtFq
-----END CERTIFICATE-----
et le certificat s'affiche à l'écran.
Voir également CURL: Afficher les informations SSL d'un domaine
Voir également openssl : Extraire les informations d'un certificat
Etiquettes:
Commentaires
Brice Vandeputte (non vérifié)
ven, 20/10/2017 - 13:03
Permalien
quitter après 2 secondes
Mes 2 centimes pour améliorer ce script:
#!/bin/sh
# src: https://www.quennec.fr/trucs-astuces/syst%C3%A8mes/gnulinux/commandes/openssl/openssl-r%C3%A9cup%C3%A9rer-un-certificat-distant
HOST=$1
PORT=${2:-443}
echo | \
openssl s_client -connect ${HOST}:${PORT} 2>&1 | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' &
CONNECTPID=$!
sleep 2
kill $CONNECTPID
exit 0
Brice Vandeputte (non vérifié)
ven, 20/10/2017 - 13:29
Permalien
quitter après 2 secondes
Bonjour
Ma version précédente ne reportait pas le stdout au process parent
Voici une version améliorée du script.
Je la poste également sur gist: https://gist.github.com/boly38/24ed3f434cbace2bf8c90ff72f782593
#!/bin/sh
# source d'origine: src: https://www.quennec.fr/trucs-astuces/syst%C3%A8mes/gnulinux/commandes/openssl/openssl-r%C3%A9cup%C3%A9rer-un-certificat-distant
# améliorations:
# - quitter après 2 secondes
# - report du stdout
HOST=$1
PORT=${2:-443}
openssl s_client -connect ${HOST}:${PORT} > .workout &
CONNECTPID=$!
sleep 2
kill $CONNECTPID
# prevent output from kill
wait $CONNECTPID 2>/dev/null
cat .workout | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
rm .workout
exit 0
ronan
lun, 23/10/2017 - 09:22
Permalien
et avec une petite redirection ...
... en cas d'erreur vers /dev/null pour la commande kill
Jean-Marc HENRY (non vérifié)
sam, 04/05/2019 - 12:35
Permalien
Merci
Hello encore une fois tu me sauves la mise.
Bonne continuation
Jean-Marc Henry
Ajouter un commentaire