OpenSSL : détecter la péremption d'un certificat avec l'option -checkend
Dans un précédent article (ici), je proposais une méthode pour renouveler les certificats Letsencrypt en l'absence d'un mécanisme officiel pour le moment. Dans cette méthode (enfin ce script), je vérifiais la date du certificat avec "date -r", extrapolant la date de fin de validité à l'aide de la date de création du certificat et de la connaissance de la durée de validité par défaut des certificats de Letsencrypt.
Il y a en fait beaucoup plus intelligent ! Merci à mon beau-frère pour cette idée (toujours écouter au moins d'une oreille son beau-frère !)
Le manuel d'OpenSSL nous apprend l'existence de l'option suivante :
-checkend arg checks if the certificate expires within the next arg seconds and exits non-zero if yes it will expire or zero if not.
Dès lors, il est facile de détecter si un certificat périme dans les 30 jours (2 592 000 secondes) :
if openssl x509 -checkend 2592000 -noout -in file.pem then echo "Certificat valide encore au moins 30 jours" else echo "Certificat périmant dans les 30 jours... à renouveler !" fi