SSL gratuit pour tous vos sites : comment fonctionne Let's Encrypt (et comment l'automatiser)
Payer pour des certificats SSL n'a plus de sens depuis 2016. Let's Encrypt les émet gratuitement — mais le vrai travail, c'est de les renouveler tous les 90 jours, indéfiniment, sans interruption. Voici comment fonctionnent réellement TLS et ACME, comment corriger les erreurs courantes, et comment faire du renouvellement une chose à laquelle vous ne pensez jamais.
Il fut un temps où un certificat SSL était une ligne de facture — 50 à 200 € par an, par domaine, acheté chez un revendeur et installé à la main. Depuis le lancement de Let's Encrypt en 2016, c'est tout simplement terminé. Le HTTPS est désormais gratuit, automatisable et attendu : les navigateurs marquent le HTTP simple comme « Non sécurisé », et Google traite le HTTPS comme un signal de classement. Si vous payez encore un certificat de base à validation de domaine en 2026, vous payez pour rien.
Mais « gratuit » masque le vrai travail. Un certificat Let's Encrypt n'est valide que 90 jours. La valeur n'a jamais été le certificat — c'est de maintenir le certificat de chaque site renouvelé, indéfiniment, sans panne à 3 h du matin quand l'un expire en silence. Cet article explique comment fonctionnent réellement TLS et Let's Encrypt, comment corriger les erreurs que tout le monde rencontre, et comment faire du renouvellement un problème auquel vous n'aurez plus jamais à penser.
Rappel en 60 secondes : ce que fait vraiment TLS
Quand un navigateur se connecte en HTTPS, TLS (le successeur de SSL — on dit encore « SSL » par habitude) fait deux choses :
- Chiffrement — personne entre le navigateur et votre serveur ne peut lire le trafic. Mots de passe, sessions et données de formulaire restent privés sur n'importe quel réseau.
- Identité — un certificat, signé par une autorité de certification (CA) de confiance, prouve que le serveur est bien
example.comet non un imposteur. C'est ce que signifie le cadenas.
Un certificat n'est qu'une clé publique plus des affirmations d'identité, signées cryptographiquement par une CA à laquelle le navigateur fait déjà confiance. Le difficile, historiquement, était d'obtenir la signature d'une CA — cela impliquait de l'argent et des étapes manuelles. Let's Encrypt a automatisé exactement cela.
Comment Let's Encrypt prouve que vous possédez le domaine (ACME)
Let's Encrypt est une CA gratuite et automatisée. Elle ne signera pas de certificat pour example.com tant que vous n'aurez pas prouvé que vous contrôlez ce domaine, via un protocole appelé ACME. Il existe deux façons de relever le défi :
- HTTP-01 — la CA demande à votre serveur de placer un fichier jeton précis à
http://votredomaine/.well-known/acme-challenge/…. Elle récupère cette URL ; si le jeton y est, vous contrôlez clairement le site. Cela nécessite le port 80 accessible et fonctionne pour un nom d'hôte à la fois. - DNS-01 — la CA vous demande de publier un enregistrement
TXTprécis à_acme-challenge.votredomaine. Elle interroge le DNS ; si l'enregistrement correspond, vous êtes validé. Celui-ci ne nécessite pas de serveur web ouvert et c'est la seule façon d'obtenir un certificat wildcard (*.votredomaine).
Une fois validée, la CA signe votre certificat. Un client comme certbot automatise toute la danse — demander, prouver, recevoir, installer — et peut recharger votre serveur web pour que le nouveau certificat prenne effet sans interruption.
Le renouvellement est le vrai travail
Voici la partie sous-estimée. Cette durée de vie de 90 jours est délibérée : des certificats à courte durée limitent les dégâts d'une clé volée et forcent l'automatisation. Mais cela signifie que chaque certificat doit être renouvelé environ tous les 60 jours (on renouvelle avant l'expiration, pas le jour même). Un oubli, et les visiteurs reçoivent un avertissement plein écran du navigateur — le genre qui fait fuir les gens pour de bon.
Le conseil standard est une tâche cron lançant certbot renew deux fois par jour ; certbot ne renouvelle réellement que les certificats dans la fenêtre des 30 jours. Ça marche — jusqu'à ce que ça ne marche plus : un renouvellement échoue en silence parce que le port 80 a été bloqué, ou qu'un enregistrement DNS a changé, ou qu'un fichier de verrou certbot périmé bloque l'exécution, et personne ne le remarque avant l'expiration. Le renouvellement n'est pas difficile ; c'est remarquer un renouvellement échoué qui brûle les sites.
Les erreurs que tout le monde rencontre (et la solution)
- « Timeout during connect » / échec HTTP-01 — la CA n'a pas pu joindre le port 80. Vérifiez que votre pare-feu (UFW/pare-feu cloud) autorise l'entrée sur
80, et que le DNS du domaine pointe bien vers ce serveur. - « DNS problem: NXDOMAIN » / enregistrement introuvable — le domaine ne résout pas encore, ou vous émettez avant la propagation. Attendez la propagation DNS ; pour DNS-01, confirmez que l'enregistrement TXT
_acme-challengeest actif avant de valider. - Un enregistrement CAA interdit l'émission — un enregistrement DNS
CAAsur votre domaine restreint les CA autorisées à émettre. Ajoutez-yletsencrypt.org, ou retirez l'enregistrement restrictif. - « Too many certificates already issued » (limite de débit) — Let's Encrypt limite le nombre de certificats par domaine enregistré et par semaine. Pendant les tests, utilisez l'environnement staging pour ne pas épuiser votre quota de production, puis basculez en production une fois que ça marche.
- Certificat renouvelé, mais le site sert encore l'ancien — le serveur web n'a pas été rechargé après le renouvellement. Le renouvellement doit déclencher un
nginx -s reload(ou équivalent) pour prendre en compte le nouveau certificat.
Aucune n'est ésotérique. Mais les diagnostiquer sur une douzaine de sites, à la main, est précisément le genre de corvée récurrente qu'un panel existe pour supprimer.
Le faire à la main est fastidieux — automatisez-le
Câbler certbot, choisir le bon défi, ouvrir le port 80, scripter un cron de renouvellement, le faire recharger nginx, et surveiller que les renouvellements réussissent vraiment — pour chaque domaine, indéfiniment — fait beaucoup de pièces à maintenir correctes. C'est le travail répétitif et facile à oublier qu'un panel devrait assumer.
ShadowPanel fait du SSL un non-événement :
- Émission en un clic. Pointez un domaine vers votre serveur et émettez-lui un certificat Let's Encrypt gratuit — le panel lance certbot, gère le défi, et recharge nginx pour que le HTTPS soit actif immédiatement.
- Renouvellement automatique, surveillé. Un worker planifié vérifie chaque jour et renouvelle tout certificat à moins de 30 jours de l'expiration — bien avant l'échéance. Il purge les verrous certbot périmés avant chaque exécution, pour qu'un fichier de verrou résiduel ne puisse pas bloquer le renouvellement en silence, et il consigne les échecs au lieu d'échouer sans bruit.
- Support wildcard pour
*.votredomainevia validation DNS, pour que chaque sous-domaine soit couvert par un seul certificat. - Gratuit sur tous les paliers. Le SSL n'est pas une option payante — chaque site que vous hébergez obtient un HTTPS chiffré sans surcoût, palier gratuit inclus.
Résultat : vous émettez une fois, et le renouvellement ne devient tout simplement jamais votre problème. Cette fiabilité compte le plus quand vous hébergez de nombreux sites — voir héberger plusieurs sites clients sur un seul VPS, où un certificat expiré est un client mécontent.
En résumé
Le SSL gratuit n'est plus l'exploit — Let's Encrypt a réglé ça en 2016. Le vrai travail, c'est de renouveler un certificat de 90 jours pour chaque site, indéfiniment, et de savoir qu'un renouvellement échoue avant vos visiteurs. Comprenez les deux défis ACME, gardez le port 80 (ou vos enregistrements DNS) en bonne santé, et surtout automatisez le renouvellement avec surveillance. ShadowPanel fait tout cela par défaut, gratuitement sur tous les paliers, pour que le HTTPS soit une chose que vous réglez une fois et à laquelle vous ne pensez plus jamais.
curl -fsSL https://shadowpanel.de/install.sh | bash