Traefik Letsencrypt Wildcard-Zertifikate

  • Hallo zusammen,


    ich habe hier bei netcup drei Domains. Für eine davon wollte ich unter Docker Swarm in Traefik mit Letsencrypt mit der DNS-01 Challenge ein Wildcard-Zertifikat ausstellen lassen.


    Meine Einstellungen in der .toml:

    Und unterhalb der docker-compose.yml unterhalb des Traefik-Services:

    Code
    1. environment:
    2. NETCUP_CUSTOMER_NUMBER: 'KUNDENNUMER'
    3. NETCUP_API_KEY: 'API KEY'
    4. NETCUP_API_PASSWORD: 'DAS GENERIERTE API PASSWORD'

    Ich bekomme immer folgende Fehlermeldung:

    Code
    1. time="2019-05-16T18:05:37Z" level=error msg="Error getting ACME certificate for domain [\"*.mein-donain.de\"]: cannot obtain certificates: acme: Error -> One or more domains had a problem:\n[*.meine-domain.de] [*.meine-domain.de] acme: error presenting token: netcup: failed to find DNSZone, unexpected response code 'REFUSED' for _acme-challenge.meine-domain.de.\n"


    Jetzt ist mir nicht klar, ob Traefik einfach nur falsch konfiguriert ist oder es eine Problem mit dem Netcup DNS oder dort vorhandene Einstellungen ist.


    Weiß hier jemand woran es liegt, bzw. hat es schon mal jemand erfolgreich zum Laufen gebraucht?

  • Jetzt wo das Ausstellen der Zertifikate klappt ist heir auch gleich die zweite schlechte Idee die ich hatte in der .toml Datei:

    Code
    1. caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"

    Damit bekommt man nur Zertifikate, die von der Letsencrypt Staging-Umgebung ausgestellt werden.


    Richtig ist:

    caServer = "https://acme-v02.api.letsencrypt.org/directory"

  • Achja, noch ein wichtiger Aspekt: was noch gefehlt hat war Geduld!


    Die Einstellung `delayBeforeCheck = 900` in der .toml-Datei sorgt dafür, dass erst nach 15 Minuten der TXT-Eintrag für "_acme-challenge" überprüft wird.

    Es dauert tatsächlich so seine Zeit bis der Eintrag zu sehen ist. Nach einiger Zeit verschwindet er auch wieder.

  • Hallo Metin,

    vielen Dank für das Teilen der Konfiguration, es hat bei mir auch super funktioniert :)


    Als Ergänzung noch:

    Man kann anstelle der Umgebungsvariablen auch Dateien nutzen, in die man die Credentials hinterlegt. Das hat bei mir so funktioniert:


    docker-compose.yml



    Und die Credentials sollte man mit echo -n schreiben, damit newlines vermieden werden (damit kommt Traefik nicht klar)

    Code
    1. mkdir -p /data/traefik/netcup
    2. # echo credentials and use -n to avoid newline
    3. echo -n "12345" > /data/traefik/netcup/.NETCUP_CUSTOMER_NUMBER
    4. echo -n "XYZ" > /data/traefik/netcup/.NETCUP_API_KEY
    5. echo -n "ABC" > /data/traefik/netcup/.NETCUP_API_PASSWORD
    6. chmod -R 400 /data/traefik/netcup/



    traefik.toml

  • Danke für die Ergänzung!


    Wobei ich es eher als Geschmackssache empfinde, ob man die Credentials direkt in der compose.yml oder indirekt aus einer Datei einbindet.


    Bei mir läuft Traefik auf einem 3 Knoten Swarm-Cluster im "Global modus" (-> eine Instanz je Node) und die TLS-Zertifikate werden in einem 3 Knoten Consul-Cluster (automatisch) abgelegt. Hier könnte man "Secrets" verwenden um die "Credential-Datein" im Cluster zu verteilen.


    Demnächst sollte Treafik v2 rauskommen:

    - geänderte Konfiguration

    - zusätzlich zu Layer7 (http/https) beherrscht es nun auch Layer4 (tcp)


    Sobald es "stable" ist aktuallisiere ich hier mal die Konfiguration :)