Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Traefik: letsencrypt aufräumen nach dem Abschalten von Domains / Diensten

In gewisser Maßen wäre der gute alte Erich stolz auf Traefik. Genauer gesagt auf die Art und Weise, wie Traefik und Let’s Encrypt zusammenarbeiten:
„Vorwärts immer, Rückwärts nimmer!“ – dieses Motto nehmen sich die beiden wirklich zu Herzen.

Worauf ich hinaus will… Starten wir einen Dienst wie WordPress mit einer Domain, dann vergibt Let’s Encrypt nach Anweisung von Traefik dafür ein Zertifikat, damit die SSL-Verschlüsselung später funktioniert. So weit, so gut. Aber falls wir uns entschließen, diese WordPress Instanz aufzugeben oder auf einen anderen Server zu ziehen… Dann bleibt die Domain in der Config von Let’s Encrypt stehen und wirft bei jeder Verlängerung im Hintergrund Fehler, weil die Überprüfung fehlschlägt. Klar – die Domain ist ja auf diesem Server nicht mehr erreichbar.

Das kann unseren Server im Extremfall auf die Sperrliste von Let’s Encrypt befördern, falls wir diesen Fehler zu oft auslösen.

Also müssen wir selbst Hand anlegen und die Domain aus der Let’s Encrypt acme-Datei entfernen, damit sie in Zukunft nicht mehr angetestet wird.

Schauen wir uns das mal aus der Nähe an…

Die ganzen Zertifikate werden in der acme.json Datei im „data“-Verzeichnis von Traefik abgelegt. Da stehen auch die Domainnamen, welche das Zertifikat absichern soll.

Anpassungen in acme.json

Hierfür gibt es zwei Möglichkeiten…

Möglichkeit 1: Anpassung mit dem Skalpell

Dafür müssen wir in der Datei unsere Domains samt Zertifikat entfernen, die nicht mehr gebraucht werden:

nano ~/docker/traefik-v2/data/acme.json

{
  "le": {
    "Account": {
      "Email": "deine@e-mail.de",
      "Registration": {
        "body": {
          "status": "valid",
          "contact": [
            "mailto:deine@e-mail.de"
          ]
        },
        "uri": "https://acme-v02.api.letsencrypt.org/acme/acct/XXXXXXXXX"
      },
      "PrivateKey": "ewiglangezeichenfolgemitdemprivatenschlüssel...$"
      "KeyType": "4096"
    },
    "Certificates": [
      {
        "domain": {
          "main": "nextcloud.xp-server.de"
        },
        "certificate": "ewiglangezeichenfolgemitdemnamendeszertifikats...$"
        "key": "ewiglangezeichenfolgemitdemprivatenschlüssel...$"
        "Store": "default"
      },
      {
        "domain": {
          "main": "traefik.xp-server.de"
        },
        "certificate": "ewiglangezeichenfolgemitdemnamendeszertifikats...$"
        "key": "ewiglangezeichenfolgemitdemprivatenschlüssel...$"
        "Store": "default"
      },
      {
        "domain": {
          "main": "wordpress.xp-server.de",
          "sans": [
            "xpserver.de",
            "www.xpserver.de",
            "xp-server.de",
            "www.xp-server.de"
          ]
        },
        "certificate": "ewiglangezeichenfolgemitdemnamendeszertifikats...$"
        "key": "ewiglangezeichenfolgemitdemprivatenschlüssel...$"
        "Store": "default"
      }
    ]
  }
}

Schauen wir uns den Moloch von innen an.

Zeilen 3 + 52: Öffnet und schließt die geschweifte Klammer über den kompletten Block.

Zeilen 4 + 51: Öffnet und schließt die geschweifte Klammer über den „le“ Block.

Zeilen 5 + 50: Öffnet und schließt die eckige Klammer über den „Certificates“ Block.

[Diese Klammern auf jeden Fall intakt lassen… Ich weiß, man verheddert sich schnell im Sumpf der ganzen offenen und geschlossenen Klammern. Aber diese drei am Schluss bleiben immer stehen.]

Zeilen 4 – 17: Im ersten großen Block wird die zugehörige Zertifikat-Stelle benannt („le“) und die Informationen gespeichert, die dem Account zugrunde liegen. Also E-Mail Adresse, Account URI und der private Schlüssel.

Zeilen 19 – 50: In dem zweiten großen Block sind nun alle angeforderten und bewilligten Zertifikate gespeichert.
Hier schneiden wir nun die Zertifikate heraus, die wir nicht mehr brauchen…

Haben wir zum Beispiel das Traefik Dashboard abgeschaltet, weil wir eh nie rein schauen, dann entfernen wir anschließend die Zeilen 28 bis 35. Einschließlich der geschweiften Klammern und natürlich den Inhalt dazwischen.

Dann speichern wir die Datei ab und verlassen unseren Editor.

Jetzt müssen wir Traefik neu starten, damit dieser die Änderungen an der Datei auch mitbekommt:

docker-compose -f ~/docker/traefik-v2/docker-compose.yml down
docker-compose -f ~/docker/traefik-v2/docker-compose.yml up -d

Möglichkeit 2: Anpassung mit dem Breitschwert

Hier öffnen wir die Datei und löschen den kompletten Inhalt:

nano ~/docker/traefik-v2/data/acme.json

### "Strg+K" drücken und halten, bis alle Zeilen gelöscht sind und die Datei leer ist. Dann speichern und den Editor verlassen.

Jetzt müssen wir Traefik neu starten, damit dieser die Änderungen an der Datei auch mitbekommt:

docker-compose -f ~/docker/traefik-v2/docker-compose.yml down
docker-compose -f ~/docker/traefik-v2/docker-compose.yml up -d

Traefik wird nun Let’s Encrypt anweisen, alle Zertifikate neu zu beantragen…

Bitte das nur im Notfall machen, wenn man sich total verzettelt hat und die Datei nicht mehr gerettet werden kann. Alle Zertifikate neu holen ist für die CA ein ziemlicher Stress, den man vermeiden sollte, wenn es nicht absolut unumgänglich ist.

Fazit

Mit ein wenig Extra-Liebe und wenn wir fleißig dahinter sind, können wir unsere Zertifikats-Datei mit vergleichsweise geringem Aufwand aktuell halten und vermeiden fehlgeschlagene Anfragen an Let’s Encrypt.

Ich mein, wenn die schon so nett sind und ihren Dienst gratis zur Verfügung stellen, sollten wir sie nicht noch zusätzlich mit unnötigen Anfragen bombardieren ;)

Anzeige *

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Verwendung
von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.

Scroll to Top