OTOMY
SERVER CONFIG23 juin 20266 min

Automatiser le renouvellement SSL Let's Encrypt sur serveur

Un certificat SSL expiré, c'est un site en panne et une crédibilité anéantie. Voici comment automatiser le renouvellement Let's Encrypt une bonne fois pour toutes.

M

Par

Melissa Slimani

Automatiser le renouvellement SSL Let's Encrypt sur serveur

Pourquoi automatiser le renouvellement de votre certificat SSL Let's Encrypt serveur

Un certificat SSL Let's Encrypt expire tous les 90 jours. Si vous gérez plusieurs sites sur un VPS ou un serveur dédié, le renouvellement manuel devient un piège : un oubli, et vos visiteurs tombent sur une erreur NET::ERR_CERT_DATE_INVALID. Google pénalise votre SEO, vos clients perdent confiance.

Chez Otomy, nous gérons l'infrastructure de dizaines de PME entre la France et l'Algérie. Voici exactement la méthode que nous déployons pour automatiser le renouvellement SSL sur chaque serveur.


Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Un serveur Linux (Ubuntu 22.04 / Debian 12 recommandé)
  • Certbot installé (le client officiel Let's Encrypt)
  • Un serveur web : Nginx ou Apache
  • Un accès root ou sudo
  • Un nom de domaine pointant vers votre serveur

Étape 1 — Installer Certbot correctement

Oubliez les vieux PPA. Utilisez le snap officiel pour toujours disposer de la dernière version :

sudo apt update
sudo apt install snapd -y
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Vérifiez l'installation :

certbot --version

Étape 2 — Obtenir votre premier certificat SSL Let's Encrypt

Avec Nginx

sudo certbot --nginx -d votredomaine.com -d www.votredomaine.com

Avec Apache

sudo certbot --apache -d votredomaine.com -d www.votredomaine.com

Certbot modifie automatiquement votre configuration pour activer HTTPS et redirige le trafic HTTP.


Étape 3 — Automatiser le renouvellement avec un cron job

Certbot installe par défaut un timer systemd ou un cron job. Vérifiez :

systemctl list-timers | grep certbot

Si le timer existe, vous êtes couvert. Sinon, créez un cron manuel :

sudo crontab -e

Ajoutez cette ligne :

0 3 */10 * * certbot renew --quiet --deploy-hook "systemctl reload nginx"

Explication :

  • 0 3 */10 * * : exécution tous les 10 jours à 3h du matin
  • --quiet : pas de sortie sauf en cas d'erreur
  • --deploy-hook : recharge Nginx uniquement si le certificat a été effectivement renouvelé

Pour Apache, remplacez par systemctl reload apache2.


Étape 4 — Tester le renouvellement en simulation

Ne faites jamais confiance à une configuration non testée :

sudo certbot renew --dry-run

Si vous voyez Congratulations, all simulated renewals succeeded, tout est opérationnel.


Étape 5 — Ajouter des alertes en cas d'échec

L'automatisation sans monitoring, c'est de la négligence. Voici trois approches que nous utilisons chez Otomy :

Option A — Alerte email via cron

0 3 */10 * * certbot renew --quiet --deploy-hook "systemctl reload nginx" || echo "ÉCHEC renouvellement SSL" | mail -s "[ALERTE] SSL" admin@votredomaine.com

Option B — Webhook vers n8n ou Make

Si vous utilisez n8n (que nous déployons pour nos clients), créez un workflow qui reçoit un webhook en cas d'échec :

0 3 */10 * * certbot renew --quiet --deploy-hook "systemctl reload nginx" || curl -X POST https://votre-instance-n8n.com/webhook/ssl-fail -d '{"server":"prod-01"}'

n8n peut ensuite envoyer une notification Slack, un email, ou créer un ticket dans votre outil de gestion.

Option C — Monitoring externe

Utilisez UptimeRobot ou Better Uptime pour surveiller la date d'expiration de votre certificat. Configurez une alerte à J-14.


Cas avancé : Wildcard SSL avec DNS challenge

Pour un certificat wildcard (*.votredomaine.com), le challenge HTTP ne suffit pas. Il faut un DNS challenge :

sudo certbot certonly --manual --preferred-challenges dns -d "*.votredomaine.com" -d votredomaine.com

Pour automatiser le DNS challenge, utilisez un plugin Certbot adapté à votre registrar :

  • Cloudflare : sudo snap install certbot-dns-cloudflare
  • OVH : pip install certbot-dns-ovh
  • DigitalOcean : sudo snap install certbot-dns-digitalocean

Exemple avec Cloudflare :

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d "*.votredomaine.com" -d votredomaine.com

Fichier /root/.secrets/cloudflare.ini :

dns_cloudflare_api_token = VOTRE_TOKEN_API

Sécurisez ce fichier :

chmod 600 /root/.secrets/cloudflare.ini

Bonnes pratiques DevSecOps

  • Ne stockez jamais vos clés privées dans un dépôt Git
  • Centralisez la gestion de vos certificats si vous gérez plusieurs serveurs — un outil comme Ansible peut exécuter certbot renew sur toute votre flotte
  • Vérifiez la len chaîne de certificats avec openssl :
openssl s_client -connect votredomaine.com:443 -servername votredomaine.com < /dev/null 2>/dev/null | openssl x509 -noout -dates
  • Activez HSTS dans votre configuration Nginx pour forcer HTTPS :
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Résumé : la checklist complète

Étape Commande / Action
Installer Certbot snap install --classic certbot
Obtenir le certificat certbot --nginx -d domaine.com
Automatiser le renouvellement Cron job ou timer systemd
Tester certbot renew --dry-run
Alerter en cas d'échec Email, webhook n8n, UptimeRobot
Wildcard Plugin DNS Cloudflare/OVH

Conclusion

Automatiser le renouvellement de votre certificat SSL Let's Encrypt serveur n'est pas un luxe — c'est une obligation pour toute infrastructure sérieuse. En 30 minutes, vous éliminez un risque majeur de downtime et vous renforcez votre posture de sécurité.

Besoin d'aide pour sécuriser votre infrastructure ? Otomy accompagne les PME en France et en Algérie sur la configuration serveur, le DevSecOps et l'automatisation. Contactez-nous.

OTOMY

Prêt à automatiser votre activité ?

Réservez un appel gratuit — 30 minutes pour identifier ce qu'on peut automatiser.