Renouvellement Let's Encrypt Comprendre et vérifier le renouvellement automatique des certificats Let's Encrypt via Certbot sur un VPS HolyCloud. ~7 min de lecture Débutant #letsencrypt #certbot #ssl #renouvellement Renouvellement Let's Encrypt Les certificats Let's Encrypt sont valides 90 jours. Sur un VPS Linux HolyCloud configuré avec Certbot, le renouvellement est en principe automatique via systemd ou cron. Ce guide explique comment vérifier, tester et corriger les échecs de renouvellement. Prérequis VPS HolyCloud avec Certbot déjà installé (voir le tutoriel Nginx + Certbot) Certificats obtenus en mode webroot ou nginx Nom de domaine toujours pointé vers l'IP du VPS Ports 80 et 443 accessibles depuis Internet Comprendre le cycle de vie | Élément | Détail | |--------|--------| | Durée | 90 jours | | Renouvellement recommandé | 30 jours avant expiration | | Outil | certbot renew | | Planification | Timer systemd certbot.timer ou cron | Listez vos certificats : sudo certbot certificates Notez les dates Expiry Date et le chemin Certificate Path (souvent /etc/letsencrypt/live/votredomaine.fr/). Étape 1 : vérifier le timer systemd Sur Ubuntu/Debian récents : systemctl list-timers | grep certbot sudo systemctl status certbot.timer Activez-le si nécessaire : sudo systemctl enable certbot.timer sudo systemctl start certbot.timer Prochaine exécution : systemctl list-timers certbot.timer Étape 2 : test de renouvellement à sec Simulez le renouvellement sans modifier les certificats en production : sudo certbot renew --dry-run Résultat attendu : Congratulations, all simulated renewals succeeded. En cas d'échec, lisez le log : sudo tail -100 /var/log/letsencrypt/letsencrypt.log Étape 3 : renouvellement manuel (si besoin) Si le timer a échoué ou avant une maintenance : sudo certbot renew sudo systemctl reload nginx Avec Apache : sudo certbot renew sudo systemctl reload apache2 Hook post-renouvellement (recharge automatique Nginx) — fichier /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh : #!/bin/bash systemctl reload nginx sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh Étape 4 : surveillance de l'expiration Vérifiez la date avec OpenSSL : echo | openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | openssl x509 -noout -dates Script simple d'alerte (à adapter, envoi mail ou monitoring) : DOMAIN=www.example.com EXPIRY=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2) echo "Expiration : $EXPIRY" Causes fréquentes d'échec sur VPS HolyCloud DNS : le domaine ne pointe plus vers l'IP du VPS après migration Pare-feu : port 80 fermé (challenge HTTP-01) Nginx : virtual host modifié, server_name incorrect Rate limit Let's Encrypt : trop de tentatives — attendez ou utilisez le mode staging pour les tests : sudo certbot renew --dry-run --server https://acme-staging-v02.api.letsencrypt.org/directory Certificat révoqué : réémettez avec sudo certbot certonly --nginx -d votredomaine.fr Étape 5 : cron alternatif (si pas de timer) Vérifiez /etc/cron.d/certbot ou ajoutez : 0 3 * * * root certbot renew --quiet --deploy-hook "systemctl reload nginx" Vérification sudo certbot certificates sudo certbot renew --dry-run curl -vI https://www.example.com 2>&1 | grep -i expire Besoin d'aide HolyCloud Renouvellement OK en dry-run mais site en erreur : rechargez Nginx (sudo nginx -t && sudo systemctl reload nginx) Challenge échoué : vérifiez que le domaine résout vers l'IP affichée dans l'espace client HolyCloud Support HolyCloud : sortie certbot certificates, extrait letsencrypt.log, résultat dig +short votredomaine.fr Suite de la lecture Article précédent Python 3 et environnements virtuels Lire Article suivant Restaurer un snapshot HolyCloud Lire