Certbot en mode DNS (wildcard) Obtenez un certificat Let's Encrypt wildcard (*.domaine) via le challenge DNS-01 et Certbot sur un VPS HolyCloud. ~14 min de lecture Avancé #certbot #dns #wildcard #ssl #letsencrypt Certbot en mode DNS (wildcard) Le challenge HTTP-01 ne permet pas les certificats wildcard (*.example.com). Sur un VPS Linux HolyCloud, utilisez DNS-01 : Certbot demande un enregistrement TXT _acme-challenge que vous créez chez votre registrar ou via l'API de votre DNS (Cloudflare, OVH, etc.). Prérequis VPS HolyCloud avec Certbot installé Contrôle du DNS du domaine (API token ou accès manuel au panel DNS) Plugin DNS correspondant (ex. python3-certbot-dns-cloudflare) Pas obligatoire d'exposer le port 80 pour la validation (utile derrière CDN ou plusieurs serveurs) Étape 1 : installation Certbot et plugin DNS Exemple Cloudflare : sudo apt update sudo apt install -y certbot python3-certbot-dns-cloudflare Autres plugins courants : # OVH (si disponible en paquet ou pip) sudo apt install -y python3-certbot-dns-ovh Vérifiez les plugins : certbot plugins Étape 2 : credentials API (Cloudflare) Créez un token API Cloudflare avec permission Zone:DNS:Edit sur la zone concernée. Fichier sécurisé : sudo mkdir -p /root/.secrets sudo nano /root/.secrets/cloudflare.ini Contenu : dns_cloudflare_api_token = VOTRE_TOKEN_API sudo chmod 600 /root/.secrets/cloudflare.ini Étape 3 : demande du certificat wildcard sudo certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \ -d example.com \ -d '*.example.com' \ --agree-tos \ -m [email protected] Sans plugin (validation manuelle) : sudo certbot certonly --manual --preferred-challenges dns \ -d example.com -d '*.example.com' Certbot affiche un enregistrement TXT à créer : _acme-challenge.example.com. TXT "valeur_fournie" Attendez la propagation DNS (dig TXT _acme-challenge.example.com) puis validez. Étape 4 : utiliser le certificat avec Nginx Fichiers générés : /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem Exemple de bloc serveur : server { listen 443 ssl http2; server_name example.com *.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; root /var/www/html; index index.html; } Test et rechargement : sudo nginx -t sudo systemctl reload nginx Étape 5 : renouvellement automatique Le renouvellement DNS relance l'API ou le plugin : sudo certbot renew --dry-run Vérifiez que le timer est actif : sudo systemctl status certbot.timer Pour le mode manuel, le renouvellement ne peut pas être entièrement automatique sans hook — migrez vers un plugin DNS. Étape 6 : déploiement multi-services (HolyCloud) Un wildcard couvre tous les sous-domaines pointant vers le même VPS ou un reverse proxy : app.example.com → VPS HolyCloud IP api.example.com → même IP, virtual hosts Nginx distincts Le certificat unique simplifie la gestion TLS pour plusieurs applications sur un seul VPS HolyCloud. Vérification sudo certbot certificates echo | openssl s_client -connect example.com:443 -servername app.example.com 2>/dev/null | openssl x509 -noout -subject -dates dig TXT _acme-challenge.example.com +short Besoin d'aide HolyCloud NXDOMAIN ou TXT introuvable : propagation DNS (TTL), mauvaise zone Erreur API : token insuffisant, fichier .ini permissions trop ouvertes Support HolyCloud : plugin utilisé, sortie certbot certonly (sans secrets), dig TXT _acme-challenge Suite de la lecture Article précédent Cache statique Nginx Lire Article suivant Configurer Fail2ban Lire