Surveiller l’expiration d’un certificat SSL

Un certificat expiré, c'est un écran d'avertissement rouge devant chaque visiteur. Pour le client, le site est « cassé », même si le serveur tourne très bien.

Avec Let's Encrypt, un certificat dure 90 jours et se renouvelle seul. Quand ça marche. C'est justement quand ça ne marche plus que personne ne s'en rend compte.

Pourquoi le renouvellement automatique casse

  • Une tâche planifiée supprimée lors d'une migration ou d'une mise à jour du serveur.
  • Un changement de DNS ou de proxy qui empêche la validation.
  • Un port 80 fermé par un pare-feu, alors que la validation en a besoin.
  • Un domaine ajouté sur un serveur sans que le renouvellement soit configuré pour lui.

Vérifier une date à la main

Depuis un terminal, remplacez exemple.fr par le domaine :

echo | openssl s_client -connect exemple.fr:443 -servername exemple.fr 2>/dev/null \
  | openssl x509 -noout -enddate

La commande affiche la date d'expiration. Pratique pour un site. Impraticable pour trente, et on oublie.

Les seuils d’alerte

Une alerte le jour de l'expiration ne sert à rien. Nous prévenons à 14 jours : assez pour corriger sans stress, assez court pour ne pas recevoir d'alerte pour un certificat qui se renouvellera tout seul à 30 jours. Si votre renouvellement automatique se fait à 30 jours de l'échéance, une alerte à 14 jours signifie qu'il a déjà raté deux fois.

Ce que StatOps vérifie

Chaque site est contrôlé et la date d'expiration relevée. Le contrôle se fait toutes les 15 minutes, l'alerte part 14 jours avant l'échéance, et l'état du certificat figure dans le rapport mensuel du client. StatOps surveille les certificats, pas encore la date d'échéance des noms de domaine.

Questions fréquentes

Que faire quand un certificat a expiré ?

Lancer le renouvellement tout de suite (certbot renew sur un serveur classique), recharger le serveur web, puis chercher pourquoi le renouvellement automatique avait cessé de marcher, sinon ça recommencera dans 90 jours.

À lire aussi