Prérequis
- Un domaine dont le DNS est géré chez Cloudflare
- certbot et son plugin Cloudflare (paquet python3-certbot-dns-cloudflare sur Debian / Ubuntu)
01Pourquoi DNS-01
Pour délivrer un certificat, Let’s Encrypt demande une preuve de contrôle du domaine. Le challenge DNS-01 la fait par un enregistrement TXT temporaire : aucun serveur web n’a besoin d’être joignable, et c’est la seule méthode qui permet un certificat wildcard (*.exemple.fr).
02Un jeton d’API aux droits minimaux
Dans Cloudflare, créez un jeton avec la seule permission Zone:DNS:Edit, limitée aux zones concernées. Rangez-le dans un fichier lisible par root uniquement : certbot signale sinon des « Unsafe permissions ».
# Jeton d'API Cloudflare utilisé par certbot
dns_cloudflare_api_token = <votre jeton>03Demander le certificat
chmod 600 ~/.secrets/certbot/cloudflare.ini
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 60 \
-d exemple.fr -d '*.exemple.fr'04Le renouvellement
Les certificats Let’s Encrypt durent 90 jours ; certbot les renouvelle automatiquement. Testez la chaîne une fois pour toutes :
certbot renew --dry-runÀ retenir
- DNS-01 : le seul chemin vers un wildcard, sans port ouvert.
- Jeton limité à Zone:DNS:Edit, fichier en chmod 600.
- certbot renew --dry-run pour valider le renouvellement.