Wildcard-Zertifikate mit DNS-Challenge in Traefik

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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.