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 IPapi.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
NXDOMAINou TXT introuvable : propagation DNS (TTL), mauvaise zone- Erreur API : token insuffisant, fichier
.inipermissions trop ouvertes - Support HolyCloud : plugin utilisé, sortie
certbot certonly(sans secrets),dig TXT _acme-challenge