Retourner sur le site

Renouvellement Let's Encrypt

Comprendre et vérifier le renouvellement automatique des certificats Let's Encrypt via Certbot sur un VPS HolyCloud.

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

  1. DNS : le domaine ne pointe plus vers l'IP du VPS après migration
  2. Pare-feu : port 80 fermé (challenge HTTP-01)
  3. Nginx : virtual host modifié, server_name incorrect
  4. 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
  1. 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