Aller au contenu

Méthode — Inspecter et valider un certificat avec OpenSSL

Type : Méthode · Outil : OpenSSL · Difficulté : ⭐ Débutant

Quand l'utiliser

  • Vérifier le contenu d'un cert qu'on vient de recevoir/générer
  • Diagnostiquer un problème TLS (mauvais cert servi, chaîne cassée, dates expirées)
  • Auditer un cert distant en prod
  • Vérifier qu'une clé privée correspond bien à un cert
  • Identifier ce que contient un fichier .pem/.crt/.p12 inconnu

Cette méthode est la boîte à outils universelle d'OpenSSL côté inspection. À combiner avec Formats de certificats pour savoir d'abord à quoi on a affaire.

Inspecter un cert PEM/DER local

Affichage complet (lisible)

openssl x509 -in cert.pem -noout -text
  • -noout : ne réaffiche pas le PEM brut à la fin
  • -text : affichage humain de tous les champs

Pour un cert DER :

openssl x509 -in cert.cer -inform der -noout -text

Lecture ciblée — champs précis

# Sujet (à qui appartient le cert)
openssl x509 -in cert.pem -noout -subject

# Émetteur (la CA qui l'a signé)
openssl x509 -in cert.pem -noout -issuer

# Dates de validité
openssl x509 -in cert.pem -noout -dates

# Date d'expiration en format lisible
openssl x509 -in cert.pem -noout -enddate

# Numéro de série
openssl x509 -in cert.pem -noout -serial

# Empreinte (fingerprint) SHA-256
openssl x509 -in cert.pem -noout -fingerprint -sha256

# SAN (Subject Alternative Name)
openssl x509 -in cert.pem -noout -ext subjectAltName

# Toutes les extensions
openssl x509 -in cert.pem -noout -ext "extendedKeyUsage,keyUsage,basicConstraints,subjectAltName"

# Hash du cert (utile pour les liens dans /etc/ssl/certs/)
openssl x509 -in cert.pem -noout -hash

Vérifier rapidement la fraîcheur

# Expire dans moins de 30 jours ? (code retour 0 = oui, 1 = non)
openssl x509 -in cert.pem -noout -checkend $((30*24*3600))

# Combien de jours avant expiration ?
expiry=$(openssl x509 -in cert.pem -noout -enddate | cut -d= -f2)
echo "Expire le : $expiry"
echo "$(( ($(date -d "$expiry" +%s) - $(date +%s)) / 86400 )) jours restants"

Très utile en script de monitoring.

Inspecter un cert distant (HTTPS)

Récupérer la chaîne complète

openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null
  • -connect host:port : la cible
  • -servername : indique le SNI (essentiel quand plusieurs vhosts partagent une IP)
  • -showcerts : affiche tous les certs renvoyés (chaîne complète), pas seulement le leaf
  • `