Zum Hauptinhalt springen
Viele Unternehmen veröffentlichen interne Anwendungen über einen zentralen Reverse Proxy, der HTTPS terminiert und zusätzliche Zugriffskontrollen wie Clientzertifikate übernimmt. VARIOS AI lässt sich hinter einen solchen Proxy stellen. Diese Seite beschreibt, was VARIOS AI vom Proxy erwartet und welche Änderungen an der docker-compose.yml nötig sind.
Jede Proxy-Umgebung ist anders aufgebaut. Die Konfigurationsbeispiele auf dieser Seite verwenden nginx und zeigen die Anforderungen von VARIOS AI. Übertragen Sie sie sinngemäß auf Ihr Produkt, etwa Apache, HAProxy, F5 oder einen Webserver mit eigenem Proxy-Modul.

Aufbau

  • Die Domain aus PROJECT_DOMAIN zeigt im DNS auf den Reverse Proxy, nicht auf den VARIOS-AI-Server.
  • Der Reverse Proxy stellt das Zertifikat aus, das die Nutzer sehen, und prüft bei Bedarf die Clientzertifikate.
  • Traefik bleibt auf dem VARIOS-AI-Server unverändert im Einsatz und nimmt die Anfragen des Proxys entgegen.
  • Auf dem VARIOS-AI-Server wird kein öffentlich gültiges Zertifikat benötigt. Let’s Encrypt wird abgeschaltet.

Anforderungen an den Reverse Proxy

X-Forwarded-*-Header werden von VARIOS AI ausgewertet; in der docker-compose.yml ist dafür FLOW_HTTP_TRUSTED_PROXIES: "*" bereits gesetzt. Wie diese Header durch Traefik gelangen, hängt von der gewählten Verbindung ab, siehe unten.

VARIOS-AI-Server anpassen

Wählen Sie, wie der Reverse Proxy Traefik erreicht. Wir empfehlen HTTPS auf Port 443: Die Strecke im Netz bleibt verschlüsselt, und es sind die wenigsten Änderungen nötig.
Der Proxy leitet an https://<VARIOS-AI-Server>:443 weiter. Traefik setzt X-Forwarded-Proto: https selbst, weil die Verbindung per HTTPS ankommt.
1

Let's Encrypt am Router abschalten

Entfernen Sie am php-Service das Label mit dem Certificate Resolver. Alle anderen Labels bleiben unverändert:
docker-compose.yml
Ohne eigenes Zertifikat liefert Traefik sein selbstsigniertes Standardzertifikat (TRAEFIK DEFAULT CERT) aus. Der Proxy muss dieses Zertifikat entweder ohne Prüfung akzeptieren oder Sie hinterlegen ein Zertifikat Ihrer internen CA, dem der Proxy vertraut, siehe Eigenes HTTPS-Zertifikat konfigurieren.
2

Optional: Client-IP-Adressen übernehmen

Traefik verwirft X-Forwarded-For von unbekannten Absendern. Ohne weitere Einstellung erscheint deshalb in Protokollen die IP-Adresse des Proxys statt der des Nutzers. Damit Traefik die Header des Proxys übernimmt, ergänzen Sie im command-Block des traefik-Service die IP-Adresse des Proxys:
docker-compose.yml
Mehrere Adressen oder Netze trennen Sie mit Komma, etwa 10.0.0.5,10.0.1.0/24.
3

Änderungen anwenden

Wird Let’s Encrypt gar nicht mehr genutzt, können Sie zusätzlich die Optionen --certificatesresolvers.le.* aus dem command-Block des traefik-Service entfernen.
Beschränken Sie den Zugriff auf die Ports 80 und 443 des VARIOS-AI-Servers per Firewall auf den Reverse Proxy. Andernfalls können Nutzer den Proxy und damit die Clientzertifikats-Prüfung umgehen, indem sie den Server direkt ansprechen.

Beispielkonfiguration für nginx

Das Beispiel zeigt einen nginx als Reverse Proxy mit Clientzertifikats-Prüfung und Weiterleitung per HTTPS. Ersetzen Sie Domain, Zertifikatspfade und Serveradresse durch Ihre Werte.
/etc/nginx/conf.d/varios-ai.conf
proxy_ssl_verify off ist nur nötig, solange Traefik sein Standardzertifikat ausliefert. Haben Sie in Traefik ein Zertifikat Ihrer internen CA hinterlegt, setzen Sie stattdessen proxy_ssl_verify on und proxy_ssl_trusted_certificate auf diese CA.

Zugriffe ohne Clientzertifikat

Mit Clientzertifikats-Authentifizierung erreichen nur Geräte mit ausgerolltem Zertifikat VARIOS AI. Einige Zugriffe kommen jedoch nicht aus dem Browser eines Nutzers. Prüfen Sie, welche davon in Ihrer Installation genutzt werden: Eine Ausnahme für einen einzelnen Pfad lässt sich in nginx mit ssl_verify_client optional umsetzen. Die Prüfung erfolgt dann je location:

Prüfen

1

Aufruf über den Proxy

Öffnen Sie https://<PROJECT_DOMAIN> auf einem Gerät mit Clientzertifikat und melden Sie sich an.
Nach der Anmeldung landen Sie wieder unter https://<PROJECT_DOMAIN>, nicht unter http:// oder einer internen Adresse.
2

WebSocket

Stellen Sie im Chat eine Frage.
Die Antwort erscheint fortlaufend. In den Entwicklertools des Browsers zeigt der Tab Netzwerk für wss://<PROJECT_DOMAIN>/ws den Status 101.
3

Direkter Zugriff gesperrt

Rufen Sie von einem Arbeitsplatz https://<VARIOS-AI-Server> direkt auf.
Die Verbindung wird von der Firewall abgewiesen.

Fehlerbehebung