Let's Encrypt a révolutionné la sécurité web en rendant les certificats SSL/TLS gratuits et accessibles. Cependant, ses certificats de 90 jours nécessitent une gestion plus fréquente.
Quand l'automatisation fonctionne bien, les certificats se renouvellent silencieusement. Quand elle échoue, vous risquez des pannes.
Comprendre Let's Encrypt
Let's Encrypt est une autorité de certification à but non lucratif qui fournit des certificats Domain Validated (DV) gratuits avec validation automatisée.
Caractéristiques principales
- Gratuit : aucun coût pour les certificats
- Automatisé : via le protocole ACME standardisé
- Validité : 90 jours (encourage l'automatisation)
- Wildcards : supportés via validation DNS
- Volume : la plus grande CA au monde
Limites de taux
Let's Encrypt applique des limites pour prévenir les abus :
- 50 certificats par domaine enregistré par semaine
- 5 échecs de validation par compte par heure
- 300 nouvelles commandes par compte toutes les 3 heures
Pourquoi l'Automatisation Est Critique
La durée de vie de 90 jours rend l'automatisation absolument essentielle.
Le problème du manuel
- Le renouvellement tous les 90 jours est peu pratique
- Quelqu'un oubliera, prendra des vacances, ou quittera l'organisation
- La fenêtre de renouvellement recommandée est de 30 jours avant expiration
L'avantage de l'automatisation
Avec l'automatisation correcte :
- Les certificats se renouvellent silencieusement
- Aucune intervention humaine nécessaire
- Fiabilité supérieure aux processus manuels
Configurer l'Automatisation
L'automatisation Let's Encrypt implique plusieurs composantes.
Installation de Certbot
# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx
# CentOS/RHEL
sudo dnf install certbot python3-certbot-nginx
# Avec snap (recommandé par Let's Encrypt)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Obtention initiale du certificat
Avec Nginx :
sudo certbot --nginx -d example.com -d www.example.com
Avec Apache :
sudo certbot --apache -d example.com -d www.example.com
Mode standalone :
sudo certbot certonly --standalone -d example.com
Validation HTTP-01 vs DNS-01
| Méthode | Avantages | Inconvénients |
|---|---|---|
| HTTP-01 | Simple, automatique | Nécessite port 80 ouvert |
| DNS-01 | Fonctionne sans port 80, wildcards | Nécessite API DNS |
Validation DNS pour wildcards :
sudo certbot certonly --manual --preferred-challenges dns \
-d "*.example.com" -d example.com
Automatisation du renouvellement
Certbot installe automatiquement une tâche cron ou un timer systemd.
Vérifier la configuration systemd :
sudo systemctl status certbot.timer
Tester le renouvellement :
sudo certbot renew --dry-run
Configuration du timer systemd :
# /etc/systemd/system/certbot.timer
[Unit]
Description=Run certbot twice daily
[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true
[Install]
WantedBy=timers.target
Hooks post-renouvellement
# Recharger Nginx après renouvellement
sudo certbot renew --post-hook "systemctl reload nginx"
# Recharger Apache
sudo certbot renew --post-hook "systemctl reload apache2"
Bonnes Pratiques de Surveillance
Surveillez les certificats Let's Encrypt avec ces recommandations.
Surveillance externe indépendante
Implémentez une surveillance d'expiration externe, indépendante de certbot :
- Même si certbot fonctionne, un problème de déploiement peut laisser un ancien certificat
- Utilisez un service de monitoring externe comme WizStatus
- Configurez des alertes bien avant la fenêtre de 30 jours
Surveillance des logs
# Vérifier les logs de renouvellement
sudo journalctl -u certbot.service
# Logs détaillés certbot
cat /var/log/letsencrypt/letsencrypt.log
Alertes multi-seuils
Configurez des alertes à plusieurs niveaux :
45 jours → Information (surveillance)
30 jours → Alerte (renouvellement aurait dû se faire)
14 jours → Urgence (intervention nécessaire)
7 jours → Critique (escalade immédiate)
Dépannage courant
Erreur de validation HTTP :
# Vérifier que le challenge est accessible
curl -I http://example.com/.well-known/acme-challenge/test
Erreur de rate limit :
# Vérifier les limites actuelles
# Attendez ou utilisez le staging pour les tests
certbot certonly --staging -d example.com
Certificat non déployé :
# Vérifier le certificat actif
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
Conclusion
Let's Encrypt a rendu les certificats SSL accessibles à tous. Mais ses courtes durées de vie nécessitent une automatisation robuste et une surveillance vigilante.
Combinez certbot pour le renouvellement automatisé avec une surveillance externe de l'expiration. La clé est de ne jamais supposer que l'automatisation fonctionne : vérifiez-le continuellement.