Wildcard-Zertifikate mit DNS-Challenge in Traefik
Wildcard-Zertifikate mit DNS-Challenge in Traefik
Traefik kann Wildcard-Zertifikate für Domains wie *.samogo.de ausstellen, wenn die DNS-Challenge verwendet wird. Dies ist erforderlich, da Let's Encrypt Wildcard-Zertifikate nur über DNS-Challenges erlaubt.
Voraussetzungen
- Traefik muss Zugriff auf ein Skript haben, das DNS-Records automatisch setzen kann (z. B. über die API des DNS-Anbieters).
- Das Zertifikat wird über den Resolver letsencrypt beantragt.
- Ein DNS-Eintrag vom Typ TXT unter _acme-challenge.domain.tld muss automatisiert gesetzt und verifiziert werden können.
Beispielkonfiguration in traefik.yaml
certificatesResolvers:
letsencrypt:
acme:
storage: /letsencrypt/acme.json
email: technik@xinux.de
dnsChallenge:
provider: exec
delayBeforeCheck: 15
resolvers:
- 1.1.1.1:53
- 1.0.0.1:53
DNS-Challenge via exec
Im Traefik-Container muss ein Skript bereitgestellt werden, das per Umgebungsvariable EXEC_PATH aufgerufen werden kann. Beispiel:
environment: - EXEC_PATH=./update-dns.sh volumes: - ./update-dns.sh:/update-dns.sh
Das Skript muss je nach Provider den passenden TXT-Record setzen und nach Abschluss auch wieder entfernen.
Verwendung in Docker-Labels
Bei jedem Traefik-Router, der ein Zertifikat nutzen soll, muss der Certresolver explizit angegeben werden:
- "traefik.http.routers.name.tls.certresolver=letsencrypt"
Auch wenn ein Wildcard-Zertifikat bereits vorhanden ist, ordnet Traefik es nur dann zu, wenn der Resolver angegeben ist.
Beispiel: Uptime-Kuma
- "traefik.http.routers.uptime-kuma-secured.rule=Host(`uptime-kuma.samogo.de`)" - "traefik.http.routers.uptime-kuma-secured.entrypoints=websecure" - "traefik.http.routers.uptime-kuma-secured.tls=true" - "traefik.http.routers.uptime-kuma-secured.tls.certresolver=letsencrypt"
Zertifikatslaufzeit
Das Wildcard-Zertifikat ist wie üblich 90 Tage gültig und wird von Traefik automatisch erneuert, solange das DNS-Skript korrekt funktioniert.