Générer un certificat Wildcard Let’s Encrypt avec Certbot et Cloudflare (DNS-01)

Dans ce tutoriel, nous allons voir comment générer un certificat wildcard Let’s Encrypt à l’aide de Certbot pour un domaine hébergé chez Cloudflare.

Nous utiliserons le challenge DNS-01, indispensable pour les certificats wildcard, en nous appuyant sur l’API Cloudflare afin de valider automatiquement le domaine.

Cette méthode permet de sécuriser l’ensemble des sous-domaines avec un seul certificat, tout en facilitant le renouvellement automatique.

Générer le jeton API sur Cloudflare

La première étape va être de générer un jeton d’API afin que Certbot puisse ajouté un enregistrement de vérification sur votre domaine Cloudflare.

Depuis votre Profil, aller sur Jeton API et cliquer sur le bouton Créer un jeton 1.

Choisir le modèle Modifier le DNS Zone 1.

Dans la section ressource, configurer sélectionner le domaine 1 et cliquer ensuite sur le bouton Continuer vers le résumé 2.

Relire la configuration du jeton et si tout est bon, cliquer sur le bouton Créer un jeton 1.

Le jeton s’affiche, copier le et enregistrer dans votre gestionnaire de mot de passe (Passbolt, Vaultwarden, …).

Le jeton est visible une seule fois !

Installer Certbot

Pour générer le certificat Wildcard, nous avons besoin de Certbot et du plugin Cloudflare.

Si vous ne l’avez pas encore fait, installer le paquet certbot et le plugin pour Cloudflare

sudo apt install -y certbot python3-certbot-dns-cloudflare

Configuration pour générer un certificat Wildcard Let’s Encrypt avec Cloudflare

Commencer par créer un fichier qui va contenir le token généré plutot depuis Cloudflare.

sudo nano /etc/letsencrypt/cloudflare.ini

Dans le fichier mettre le contenu suivant en remplaçant TOKEN_CLOUDFLARE par votre jeton.

dns_cloudflare_api_token = TOKEN_CLOUDFLARE

Sécuriser le fichier :

sudo chmod 600 /etc/letsencrypt/cloudflare.ini

Générer un certificat Wildcard Let’s Encrypt avec Cloudflare

Pour générer le certificat entrer la commande ci-dessous en adaptant le domain :

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials  /etc/letsencrypt/cloudflare.ini -d domain.tld -d *.domain.tld

Si c’est la première utilisation de Certbot, entrer l’adresse e-mail et répondre au différentes questions et patientent pendant l’obtention du certificat.

Le certificat est généré, vous pouvez maintenant, l’utiliser dans Nginx ou Apache en fonction de votre serveur Web.

Exemple Apache :

<VirtualHost *:443>
    ServerName domain.tld
    ServerAlias *.domain.tld

    DocumentRoot /var/www/domain.tld/public

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/domain.tld/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem

    <Directory /var/www/domain.tld/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain.tld_error.log
    CustomLog ${APACHE_LOG_DIR}/domain.tld_access.log combined
</VirtualHost>

Exemple Nginx :

server {
    listen 443 ssl http2;
    server_name domain.tld *.domain.tld;

    root /var/www/domain.tld/public;
    index index.html index.php;

    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/domain.tld_access.log;
    error_log /var/log/nginx/domain.tld_error.log;
}

Renouvellement automatique du certificat wildcard Let’s Encrypt

Les certificats Let’s Encrypt ont une durée de validité de 90 jours. Certbot met en place un renouvellement automatique via un timer systemd (ou cron selon l’installation).

Dans le cas d’un certificat wildcard utilisant le challenge DNS-01 avec Cloudflare, le renouvellement se fait sans interruption de service, à condition que le token API Cloudflare soit toujours valide.

Vérification du mécanisme de renouvellement :

sudo certbot renew --dry-run

Conclusion

La génération d’un certificat wildcard Let’s Encrypt avec Certbot et Cloudflare est une solution fiable et efficace pour sécuriser l’ensemble d’un domaine et de ses sous-domaines avec un seul certificat.
Grâce au challenge DNS-01 et à l’utilisation de l’API Cloudflare, la validation et le renouvellement automatique se font sans dépendre d’un serveur web accessible publiquement.

Cette approche est particulièrement adaptée aux environnements modernes : serveurs Linux, Apache, Nginx, reverse-proxy, Docker, ou encore des services exposés uniquement en interne.
Une fois en place, elle permet de maintenir un haut niveau de sécurité tout en réduisant la maintenance opérationnelle.

FAQ – Certificat wildcard Let’s Encrypt avec Certbot et Cloudflare

Pourquoi utiliser un certificat wildcard plutôt qu’un certificat classique ?

Un certificat wildcard permet de sécuriser tous les sous-domaines (*.domain.tld) avec un seul certificat, ce qui simplifie la gestion et évite de générer un certificat distinct pour chaque service.

Pourquoi le challenge DNS-01 est-il obligatoire pour un wildcard ?

Let’s Encrypt impose le challenge DNS-01 pour les certificats wildcard afin de prouver le contrôle du domaine au niveau DNS. Les méthodes HTTP-01 ou TLS-ALPN-01 ne sont pas compatibles avec les wildcards.

Le certificat wildcard couvre-t-il aussi le domaine principal

Non. Le wildcard couvre uniquement les sous-domaines (*.domain.tld).
Il est donc indispensable d’inclure explicitement domain.tld lors de la génération du certificat.

Le renouvellement est-il vraiment automatique avec Cloudflare ?

Oui. Tant que le token API Cloudflare reste valide et que le plugin DNS est correctement configuré, Certbot renouvelle automatiquement le certificat sans intervention manuelle.

Peut-on utiliser ce certificat avec autre chose qu’Apache ou Nginx ?

Oui. Un certificat wildcard Let’s Encrypt peut être utilisé avec Traefik, HAProxy, Docker, Kubernetes, des services internes ou tout autre logiciel compatible TLS.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

Laisser un commentaire