Skip to main content
VARIOS AI wird bei On-Premise-Installationen über Traefik ausgeliefert. Standardmäßig fordert Traefik das TLS-Zertifikat für Ihre Domain automatisch über Let’s Encrypt an (Certificate Resolver le). Das setzt voraus, dass Ihre Instanz aus dem Internet über Port 80/443 erreichbar ist. In vielen Unternehmensumgebungen ist das nicht gewünscht oder nicht möglich. Statt Let’s Encrypt können Sie Traefik ein eigenes Zertifikat bereitstellen – etwa ein Wildcard-Zertifikat, ein Zertifikat Ihrer internen CA oder ein kommerziell erworbenes Zertifikat.
Diese Seite beschreibt das Zertifikat, mit dem Traefik eingehende HTTPS-Verbindungen der Nutzer absichert. Wenn VARIOS AI ausgehend Dienste mit selbstsignierten Zertifikaten erreichen soll, benötigen Sie stattdessen ein CA-Bundle im Container – siehe Eigene TLS-Zertifikate.

Voraussetzungen

1

Zertifikat und privater Schlüssel im PEM-Format

Traefik benötigt zwei Dateien: die Zertifikatskette (.crt/.pem) und den privaten Schlüssel (.key). Beide müssen im PEM-Format vorliegen (Textdatei, beginnend mit -----BEGIN CERTIFICATE----- bzw. -----BEGIN PRIVATE KEY-----).
2

Vollständige Zertifikatskette

Die Zertifikatsdatei muss das Serverzertifikat und alle Zwischenzertifikate enthalten – zuerst das Serverzertifikat, danach die Intermediates. Ohne die Kette melden Browser und API-Clients einen Zertifikatsfehler.
3

Unverschlüsselter privater Schlüssel

Traefik kann keine passphrasegeschützten Schlüssel entsperren. Der Schlüssel muss ohne Passphrase vorliegen.
4

Passender Common Name bzw. SAN

Das Zertifikat muss auf die Domain aus PROJECT_DOMAIN in Ihrer .env ausgestellt sein (bzw. diese als Subject Alternative Name enthalten).
Format und Gültigkeit prüfen Sie vorab mit:
Zertifikat und Schlüssel gehören nur dann zusammen, wenn beide Prüfsummen identisch sind:

Wie Traefik an Zertifikate kommt

Traefik kennt zwei Wege, ein Zertifikat für einen Router zu erhalten: Die mitgelieferte docker-compose.yml für On-Premise-Installationen ist bereits für beide Wege vorbereitet. Der Traefik-Service startet mit aktiviertem File Provider und bindet die benötigten Verzeichnisse ein:
docker-compose.yml
Sie müssen den Traefik-Service also nicht anpassen. Es genügt, die Zertifikatsdateien abzulegen, eine dynamische Konfiguration zu hinterlegen und den ACME-Resolver am Router abzuschalten.

Einrichtung

1

Zertifikatsdateien ablegen

Legen Sie Zertifikat und Schlüssel im Verzeichnis traefik/certs neben Ihrer docker-compose.yml ab:
Schützen Sie den privaten Schlüssel vor unbefugtem Zugriff:
Legen Sie private Schlüssel niemals in einem Verzeichnis ab, das von einem Webserver ausgeliefert wird, und nehmen Sie sie nicht in eine Versionsverwaltung auf.
2

Dynamische Konfiguration anlegen

Erstellen Sie die Datei traefik/dynamic/certificates.yml. Traefik liest sie über den File Provider automatisch ein – die Pfade beziehen sich auf die Pfade im Container (/etc/traefik/certs), nicht auf die Pfade des Hosts.
traefik/dynamic/certificates.yml
Der Abschnitt certificates stellt das Zertifikat für passende Hostnamen bereit. stores.default.defaultCertificate legt es zusätzlich als Standardzertifikat fest – damit antwortet Traefik auch bei Anfragen ohne passenden Hostnamen mit Ihrem Zertifikat statt mit dem generierten Platzhalter TRAEFIK DEFAULT CERT.
3

Let's Encrypt am Router abschalten

Entfernen Sie in der docker-compose.yml am php-Service das Label mit dem Certificate Resolver. Das Label tls=true bleibt erhalten – nur die automatische Beschaffung entfällt:
docker-compose.yml
Bleibt certresolver=le gesetzt, versucht Traefik weiterhin, ein Let’s-Encrypt-Zertifikat auszustellen. In abgeschotteten Netzen scheitert das dauerhaft und füllt das Log mit ACME-Fehlern.
Optional können Sie zusätzlich die ACME-Optionen aus dem command-Block des Traefik-Service entfernen (--certificatesresolvers.le.*), wenn Let’s Encrypt gar nicht mehr genutzt wird.
4

Änderungen anwenden

Die Label-Änderung wird erst mit einem neu erstellten Container wirksam; docker compose up -d erledigt das automatisch. Reine Änderungen an den Dateien unterhalb von traefik/dynamic und traefik/certs übernimmt Traefik durch --providers.file.watch=true dagegen ohne Neustart.

Prüfen

Prüfen Sie nach dem Start, welches Zertifikat Traefik ausliefert:
Ausgegeben werden müssen der Aussteller und die Gültigkeit Ihres Zertifikats. Erscheint stattdessen TRAEFIK DEFAULT CERT, wurde die dynamische Konfiguration nicht geladen.
Die Zertifikatskette prüfen Sie mit:
Traefik protokolliert Fehler beim Laden der dynamischen Konfiguration im Container-Log:

Zertifikat erneuern

Zum Austausch eines auslaufenden Zertifikats ersetzen Sie lediglich die beiden Dateien:
Dank --providers.file.watch=true erkennt Traefik die Änderung in der Regel automatisch. Wird das alte Zertifikat weiterhin ausgeliefert, erzwingen Sie das Neuladen:
Hinterlegen Sie eine Erinnerung vor dem Ablaufdatum. Anders als bei Let’s Encrypt erneuert sich ein manuell hinterlegtes Zertifikat nicht von selbst.

Mehrere Domains

Soll VARIOS AI unter mehreren Hostnamen erreichbar sein, ergänzen Sie weitere Einträge unter certificates. Traefik wählt anhand des per SNI übermittelten Hostnamens das passende Zertifikat aus:
traefik/dynamic/certificates.yml
Die zusätzlichen Hostnamen müssen außerdem in der Router-Regel stehen:
docker-compose.yml
Ein Wildcard-Zertifikat (*.example.com) benötigt keine Sonderbehandlung – es wird wie jedes andere Zertifikat eingebunden und gilt für alle passenden Hostnamen.

TLS-Optionen härten

Über den File Provider lassen sich auch die zulässigen TLS-Versionen und Cipher Suites festlegen. Legen Sie dazu eine weitere Datei im selben Verzeichnis an:
traefik/dynamic/options.yml
Die Option default gilt automatisch für alle Router, die keine eigene TLS-Option gesetzt haben. sniStrict: true weist Verbindungen ohne passenden Hostnamen ab – prüfen Sie vorher, dass alle Clients und Monitoring-Systeme SNI verwenden. Die Cipher-Suite-Liste wirkt nur auf TLS 1.2; die Suites von TLS 1.3 sind fest vorgegeben.

Fehlerbehebung