Un certificat Let's Encrypt est valide 90 jours et Plesk le renouvelle automatiquement 30 jours avant expiration. Quand ça casse, le site continue à tourner pendant quelques semaines puis les visiteurs tombent sur un écran rouge. Voici comment diagnostiquer et remettre le renouvellement d'aplomb avant que le certificat expire vraiment.
Symptômes
- Plesk affiche une alerte rouge « Le certificat expire dans X jours » dans Sites Web & Domaines.
- Les navigateurs affichent
NET::ERR_CERT_DATE_INVALID(Chrome) ouSEC_ERROR_EXPIRED_CERTIFICATE(Firefox). curl https://monsite.frrenvoieSSL certificate problem: certificate has expired.- Vos monitorings externes (UptimeRobot, status page) passent en rouge sur la sonde HTTPS.
Les 4 causes les plus fréquentes
1. Le challenge HTTP-01 n'aboutit pas
Let's Encrypt renouvelle en déposant un fichier dans /.well-known/acme-challenge/ puis en venant le lire depuis Internet. Si ce chemin n'est pas accessible en clair sur le port 80, ça échoue. Causes courantes :
- Une règle
.htaccessintercepte toutes les URL (WordPress, Symfony, règle de maintenance) avant que le challenge passe. - Un Cloudflare en devant-serveur met en cache la réponse 404 précédente ou applique une Page Rule « Always HTTPS » qui casse la requête.
- Une redirection HTTPS forcée au niveau serveur redirige aussi
/.well-known/, cassant le challenge (Let's Encrypt suit les redirects mais pas toujours proprement).
2. Un enregistrement CAA bloque Let's Encrypt
Vérifiez ce que votre zone DNS autorise :
dig CAA monsite.fr +short
Si la commande renvoie quelque chose comme 0 issue "digicert.com" sans mentionner letsencrypt.org, Let's Encrypt refuse d'émettre. Pas de réponse = pas de CAA = toutes les AC sont autorisées, donc Let's Encrypt fonctionne.
3. Vous avez tapé dans le rate limit Let's Encrypt
Les limites publiques qui font le plus mal :
- 5 échecs de validation par compte, par hostname, par heure. Après 5 tentatives infructueuses, plus rien ne passe pendant 1 heure.
- 50 certificats par domaine enregistré par semaine. Vous y tapez surtout en multipliant les sous-domaines d'un même domaine racine.
- 5 duplicatas identiques par semaine. Typique quand un script de renouvellement boucle sans comprendre pourquoi il échoue.
4. Le domaine ne pointe plus vers le serveur
Le DNS a été modifié, un Cloudflare a été activé en proxy sans mettre à jour l'origine, un registrar a retiré la délégation. Vérifiez :
dig +short monsite.fr
dig +short www.monsite.fr
Le résultat doit être l'IP publique de votre hébergement Datacampus (ou l'IP Cloudflare si vous êtes en proxy, auquel cas il faut aussi vérifier l'origine côté Cloudflare).
Diagnostiquer dans Plesk
- Ouvrez Sites Web & Domaines > monsite.fr > Certificats SSL/TLS.
- Sélectionnez le certificat Let's Encrypt et cliquez sur Renouveler (ou Reissue).
- Lisez le message d'erreur complet. Plesk remonte la réponse brute de Let's Encrypt : c'est là qu'est le vrai indice.
Quelques messages typiques et leur traduction :
urn:ietf:params:acme:error:unauthorized» le challenge HTTP-01 n'a pas trouvé le bon contenu » cause 1.urn:ietf:params:acme:error:caa» CAA bloque » cause 2.urn:ietf:params:acme:error:rateLimited» cause 3, attendez.DNS problem: NXDOMAIN looking up A for monsite.fr» cause 4.
Solutions par cause
Si Cloudflare est devant Plesk
Ajoutez une Page Rule (ou une règle Cache) pour bypasser le cache sur le chemin du challenge :
URL : *monsite.fr/.well-known/acme-challenge/*
Setting : Cache Level = Bypass
Always Use HTTPS = Off (sur ce chemin uniquement)
Vérifiez aussi que votre WAF Cloudflare ne bloque pas les requêtes vers /.well-known/.
Si c'est un CAA trop strict
Ajoutez dans votre zone DNS :
monsite.fr. CAA 0 issue "letsencrypt.org"
monsite.fr. CAA 0 issuewild "letsencrypt.org"
Attendez la propagation (TTL) puis relancez le renouvellement.
Si le DNS a changé
Remettez un A record correct vers votre IP Datacampus. Si vous êtes derrière Cloudflare, vérifiez que l'IP d'origine configurée côté Cloudflare est bien celle de votre serveur Plesk.
En dernier recours : validation DNS-01 manuelle
Si le HTTP-01 est impossible (port 80 définitivement fermé, serveur inaccessible depuis Internet mais certificat requis pour du trafic interne VPN par exemple), passez en DNS-01. Plesk le propose pour les wildcards ; pour un domaine simple, certbot certonly --manual --preferred-challenges dns fait le travail. Vous publiez un TXT _acme-challenge, Let's Encrypt le lit, émet le certificat, puis vous l'uploadez dans Plesk.
Cas spécifique : wildcard
Un certificat *.monsite.fr ne peut pas être émis avec le challenge HTTP-01 — Let's Encrypt impose DNS-01 pour les wildcards. Conséquence :
- Si votre DNS est hébergé chez Plesk, il publie et nettoie automatiquement le TXT
_acme-challenge. Rien à faire. - Si votre DNS est externe (OVH, Cloudflare, Gandi), Plesk ne peut pas publier le TXT seul. Soit vous passez le DNS chez Plesk, soit vous renouvelez à la main via certbot + API du registrar, soit vous acceptez que le wildcard ne se renouvelle plus tout seul (mauvaise idée).
Certificat payant (GoGetSSL, Sectigo, DigiCert)
Si votre certificat n'est pas Let's Encrypt, il n'y a pas de renouvellement automatique. Vous devez :
- Générer un nouveau CSR (ou réutiliser celui du premier émission).
- Payer le renouvellement chez votre revendeur et récupérer le
.crt+ chaîne intermédiaire. - Dans Plesk : Certificats SSL/TLS > Gérer, collez la clé privée (déjà en place), le certificat et la CA bundle, puis sauvegardez.
- Réaffectez le certificat à l'hébergement du domaine.
Une migration Let's Encrypt est souvent plus simple si vous n'avez pas de contrainte EV/OV particulière.
Prévention
- Dans Plesk, activez l'alerte email 14 jours avant expiration sur l'adresse d'administration (Outils & Paramètres > Paramètres généraux > Notifications).
- Ajoutez un monitoring externe sur HTTPS : UptimeRobot, Pingdom, ou simplement un cron
curl -sSf https://monsite.frqui râle en cas d'erreur TLS. - Testez régulièrement votre config avec SSL Labs et regardez crt.sh pour voir ce qui a été émis pour votre domaine.
/.well-known/acme-challenge/ depuis l'intérieur du réseau et depuis l'extérieur — la différence vous dit tout de suite qui bloque.