Traefik: Zertifikat erneuern
Auf dieser Seite
In einer Docker-Installation mit Traefik als Reverse Proxy (Standard, siehe Docker (empfohlen) →) hängt das Vorgehen davon ab, ob Traefik das Zertifikat selbst von Let’s Encrypt bezieht oder ein statisches Zertifikat einer Zertifizierungsstelle ausliefert.
Let’s Encrypt (Standard)
In der Standardinstallation bezieht und erneuert Traefik das Let’s-Encrypt-Zertifikat automatisch; ein manueller Austausch ist nicht erforderlich. Schlägt die Erneuerung fehl, geben die Logs des Traefik-Containers Aufschluss (z. B. docker compose logs traefik im Verzeichnis /opt/relution). Dabei ist zu prüfen, ob der DNS-Eintrag der External URL auf den Server zeigt und Port 80 aus dem Internet erreichbar ist, da Traefik das Zertifikat über die HTTP-Challenge auf Port 80 bezieht. Port 443 muss für den Zugriff auf Relution ebenfalls erreichbar sein.
Traefik speichert die bezogenen Zertifikate in der Datei /opt/relution/certs/letsencrypt/acme.json (im Container /letsencrypt/acme.json).
Statische Zertifikate
Zertifikatskette (server.pem) und privater Schlüssel (server.key) eines gekauften Zertifikats werden zunächst nach Gekauftes Zertifikat erneuern → vorbereitet.
Voraussetzung ist, dass Traefik für statische Zertifikate konfiguriert ist: Die Konfigurationsdatei relution.static_cert.yaml liegt im Verzeichnis /opt/relution/configs/traefik, und die compose.yaml bindet das Verzeichnis ./certs/static in den Traefik-Container ein. Wurde bisher Let’s Encrypt verwendet, erfolgt die Umstellung wie unter Traefik - statische Zertifikate in Docker (empfohlen) → beschrieben.
Traefik liest beide Dateien aus dem Verzeichnis /opt/relution/certs/static. Vor dem Austausch werden die bisherigen Dateien gesichert, damit bei Problemen auf sie zurückgegriffen werden kann:
cd /opt/relution/certs/static
sudo cp server.pem server.pem.old
sudo cp server.key server.key.old
Die Datei server.pem wird durch das neue Zertifikat ersetzt, bei einem neuen Schlüsselpaar (neue CSR) zusätzlich server.key. Der private Schlüssel sollte nur für root lesbar sein (sudo chmod 600 server.key). Anschließend wird Traefik im Verzeichnis /opt/relution neu gestartet:
docker compose restart traefik
Alternativ lassen sich alle Container mit docker compose down stoppen und mit docker compose up -d wieder starten; dabei werden auch Relution und die Datenbank kurz gestoppt, sodass Relution währenddessen nicht erreichbar ist.
Liefert Traefik danach nicht das neue Zertifikat aus, zeigen die Logs des Containers (docker compose logs traefik) die Ursache, z. B. eine fehlerhafte Zertifikatsdatei oder einen nicht passenden Schlüssel. In diesem Fall lassen sich die gesicherten Dateien server.pem.old und server.key.old zurückkopieren, bis der Fehler behoben ist.
Abschließend wird im Browser die Relution-Weboberfläche aufgerufen und über das Schloss-Symbol in der Adressleiste geprüft, ob das neue Zertifikat mit dem neuen Ablaufdatum ausgeliefert wird. Ob die Kette vollständig ausgeliefert wird, lässt sich zusätzlich z. B. mit WhatsMyChainCert → prüfen.