GNU/Linux >> Tutoriels Linux >  >> Linux

Comment déterminer la date d'expiration du certificat SSL à partir d'un certificat encodé PEM ?

Avec openssl :

openssl x509 -enddate -noout -in file.pem

La sortie est sur le formulaire :

notAfter=Nov  3 22:23:50 2014 GMT

Voir également la réponse de MikeW pour savoir comment vérifier facilement si le certificat a expiré ou non, ou s'il le sera dans un certain délai, sans avoir à analyser la date ci-dessus.


Si vous voulez juste savoir si le certificat a expiré (ou le fera dans les N prochaines secondes), le -checkend <seconds> option à openssl x509 vous dira :

if openssl x509 -checkend 86400 -noout -in file.pem
then
  echo "Certificate is good for another day!"
else
  echo "Certificate has expired or will do so within 24 hours!"
  echo "(or is invalid/not found)"
fi

Cela évite d'avoir à faire soi-même des comparaisons date/heure.

openssl renverra un code de sortie de 0 (zéro) si le certificat n'a pas expiré et ne le fera pas pendant les prochaines 86400 secondes, dans l'exemple ci-dessus. Si le certificat a expiré ou l'a déjà fait - ou une autre erreur comme un fichier invalide/inexistant - le code de retour est 1 .

(Bien sûr, cela suppose que l'heure/la date sont correctement réglées)

Sachez que les anciennes versions d'openssl ont un bogue qui signifie que si l'heure spécifiée dans checkend est trop grand, 0 sera toujours renvoyé (https://github.com/openssl/openssl/issues/6180).


Voici ma ligne de commande bash pour répertorier plusieurs certificats par ordre d'expiration, le plus récent expirant en premier.

for pem in /etc/ssl/certs/*.pem; do 
   printf '%s: %s\n' \
      "$(date --date="$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" --iso-8601)" \
      "$pem"
done | sort

Exemple de sortie :

2015-12-16: /etc/ssl/certs/Staat_der_Nederlanden_Root_CA.pem
2016-03-22: /etc/ssl/certs/CA_Disig.pem
2016-08-14: /etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_S.pem

Linux
  1. Comment vérifier si le certificat SSL est SHA1 ou SHA2 en utilisant OpenSSL ?

  2. Comment créer un certificat SSL auto-signé sur Ubuntu 18.04

  3. Comment installer un certificat SSL dans Plesk

  4. Comment obtenir la date d'expiration du mot de passe utilisateur à partir d'Active Directory ?

  5. Comment déterminer le numéro de la semaine du mois

OpenSSL :vérifier la date d'expiration du certificat SSL et obtenir plus d'informations

Comment installer un certificat SSL dans cPanel ?

Comment installer un certificat SSL sur cPanel

Comment vérifier la date d'expiration SSL sur Plesk

Comment vérifier la date d'expiration d'un certificat TLS/SSL sur Ubuntu

Comment générer un certificat openssl avec une expiration inférieure à un jour ?