Let's Encrypt mit Cloudflare DNS-Challenge
Zur Navigation springen
Zur Suche springen
Let's Encrypt mit Cloudflare DNS-Challenge
Zertifikat per DNS-01 über die Cloudflare-API. Kein offener Port, kein Webserver nötig – Wildcard-Zertifikate möglich.
Voraussetzungen
- Domain wird bei Cloudflare verwaltet (Nameserver zeigen auf Cloudflare)
- Scoped API-Token (nicht den globalen API-Key verwenden)
Plugin installieren
- certbot Cloudflare-Plugin (Debian/Ubuntu)
apt install python3-certbot-dns-cloudflare
API-Token bei Cloudflare anlegen
My Profile → API Tokens → Create Token
Permissions:
Zone : DNS : EditZone : Zone : Read
Unter Zone Resources auf die konkrete Zone einschränken.
Credentials-Datei
- Token hinterlegen
vim /etc/letsencrypt/cloudflare.ini
dns_cloudflare_api_token = 2XX_DEIN_TOKEN
- Rechte setzen (sonst meckert certbot)
chmod 600 /etc/letsencrypt/cloudflare.ini
Zertifikat anfordern
- Einzeldomain + Wildcard
certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \ -d 2XX.de -d '*.2XX.de'
Das Plugin setzt automatisch den TXT-Record _acme-challenge,
wartet auf die Propagation und entfernt ihn danach wieder.
Stolpersteine
- Träges DNS – Wartezeit erhöhen (Default 10s)
--dns-cloudflare-propagation-seconds 30
- Proxy-Status (orange Wolke)
Stört die DNS-Validierung nicht – der TXT-Record wird trotzdem aufgelöst. Nur bei der HTTP-Challenge wäre die Wolke ein Problem.
Renewal
Erneuerung läuft automatisch über den certbot-Timer. Die Credentials sind in der renewal-conf hinterlegt, daher kein erneutes Eingreifen nötig.
- Test ohne echtes Erneuern
certbot renew --dry-run
Deploy-Hook (optional)
- Dienst nach Erneuerung neu laden
certbot certonly ... --deploy-hook "systemctl reload nginx"
Zertifikate liegen unter:
/etc/letsencrypt/live/2XX.de/fullchain.pem /etc/letsencrypt/live/2XX.de/privkey.pem