Trucs & Astuces

openssl : Récupérer un certificat distant

openssl : Récupérer un certificat distant

Par ronan , 20 mars, 2024

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

Brice Vandeputte (non vérifié)

il y a 8 ans 5 mois

Mes 2 centimes pour améliorer ce script:

  • retrouver la source :)
  • quitter après X secondes


#!/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é)

il y a 8 ans 5 mois

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

Jean-Marc HENRY (non vérifié)

il y a 6 ans 11 mois

Hello encore une fois tu me sauves la mise.
Bonne continuation
Jean-Marc Henry