Dieser Artikel beschreibt die Konfiguration von IGEL Universal Management Suite (UMS) und NGINX für SSL-Offloading. Sie können dieses Dokument verwenden, wenn Sie möchten, dass SSL nicht am UMS Server, sondern am Load Balancer / Reverse Proxy terminiert wird. Der Artikel basiert auf dem Beispiel von NGINX. Weitere Informationen zu NGINX finden Sie unter https://www.nginx.com/resources/glossary/nginx/.
Die allgemeine Kompatibilität wird mit den in diesem Artikel beschriebenen Konfigurationen getestet. Da es sich bei dem Reverse Proxy um eine externe Software handelt, können wir keine vollständige Unterstützung für jede Version bieten.
Anforderungen
Die Anforderungen für UMS und die Konfiguration von Zertifikaten für den Reverse-Proxy sind zusammengefasst in Konfigurieren der UMS zur Integration von Reverse Proxy mit SSL-Offloading.
Prozess-Übersicht
Die Konfigurationsaufgaben des Reverse Proxy sind:
-
UMS / ICG Konfiguration und Zertifikatexport wie in Konfiguration von UMS zur Integration von Reverse Proxy mit SSL-Offloading
-
NGINX-Installation (Beispiel basierend auf Ubuntu)
-
NGINX-Konfiguration
NGINX-Installation (Beispiel auf Basis von Ubuntu)
→ Installiere NGINX auf deinem System:
sudo apt update
sudo apt install nginx
→ Wenn eine Firewall verwendet wird, überprüfen Sie die Konfiguration:
-
Überprüfen Sie die Firewall-Konfiguration:
sudo ufw app list
Die Ausgabe des Befehls sollte wie folgt aussehen:Ausgabe Verfügbare Anwendungen: Nginx Voll Nginx HTTP Nginx HTTPS OpenSSH
-
Aktivieren Sie 'Nginx Full':
sudo ufw allow 'Nginx Full'
-
Überprüfen Sie die Firewall-Konfiguration mit
sudo ufw status
-
Für die UMS Unterstützung kann es notwendig sein, weitere Ports zu öffnen. Weitere Informationen zu UMS Ports finden Sie unter IGEL UMS Communication Ports.
-
Abfrage des aktuellen Status von NGINX:
sudo systemctl status nginx
-
Überprüfen Sie die aktuelle Konfiguration von NGINX:
sudo nginx -t
NGINX-Konfiguration
Die Konfiguration des Servers wird in Konfigurationsdateien durchgeführt. Bei einer Ubuntu-Installation ist die Hauptkonfigurationsdatei /etc/nginx/nginx.conf.
In diesem Beispiel wird eine separate Konfigurationsdatei umsSSLOffloading.conf verwendet. Diese Datei muss in die Datei nginx.conf aufgenommen werden:
http {
##
## Grundeinstellungen
##
sendfile ein;
...
##
## Virtuelle Host-Konfigurationen
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/umsSSLOffloading.conf; # für die Konfiguration verwendet
}
Die Schlüssel und Zertifikate, die in Konfigurieren des UMS zur Integration von Reverse Proxy mit SSL-Offloading kann in ein Verzeichnis unter /etc/nginx kopiert werden: z.B. /etc/nginx/ssl - erstellen Sie das Verzeichnis, wenn es nicht existiert.
NGINX-Konfigurationsdatei für SSL-Offloading
→ Erstellen Sie eine neue Konfigurationsdatei umsSSLOffloading.conf.
Diese Datei muss
-
Upstream-Server-Konfiguration
-
Server Konfiguration
-
Standort Konfiguration
Dies ist eine Beispielkonfiguration zur Verwendung mit UMS 12 und IGEL OS 12:
-
Der upstream umsserver Block definiert den UMS Server im Backend.
upstream umsserver { server 192.168.27.96:8443 max_fails=3 fail_timeout=10s; }
-
Der Server Block enthält die Konfiguration für den NGINX-Listener und den Standort.
Das UMS Web-Zertifikat und die Client-Zertifikatsvalidierung sollten hier hinzugefügt werden.
Gemeinsame Serverkonfiguration:server { listen 8443 ssl; # Der Parameter 'ssl' weist NGINX an, den Datenverkehr zu entschlüsseln ssl_certificate ssl/ssl-cert-chain.cer; # Die Datei der Zertifikate (Web) ssl_certificate_key ssl/cert-key.key; # Die Datei mit dem privaten Schlüssel (Web) ssl_verify_client optional; ## Die Überprüfung des Zertifikats muss optional sein ssl_client_certificate ssl/estca.cer; #Zertifikat für die Überprüfung von Client Zertifikaten access_log /var/log/nginx/ssl-access.log; error_log /var/log/nginx/ssl-error.log;
-
Mindestens zwei Ortsdefinitionen sind erforderlich:
-
Location-Definition für alle Verbindungen über WebSocket. Die WebSocket-Verbindung erfordert die Übermittlung des Client-Zertifikats innerhalb des Headers. Eine zweite hinzuzufügende Header-Information ist der Upgrade-Header, der für WebSockets erforderlich ist.
# Konfiguration für Verbindungen über WebSocket, die Upgrade-Header-Information muss von NGINX geschrieben werden location ~ /device-connector/device/(ws-connect|portforwarding) { proxy_pass https://umsserver; proxy_set_header X-SSL-CERT $ssl_client_escaped_cert; # Client Zertifikat in der aktuellen Verbindung proxy_set_header Upgrade $http_upgrade; # Upgrade-Header setzen proxy_set_header Verbinden $connection_upgrade; proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer; #trusted Cert Chain für UMS Verbindung # TLSv1.3 Konfiguration wird empfohlen, ist aber nicht notwendig proxy_ssl_protocols TLSv1.3; }
-
Lokationsdefinition für alle anderen Verbindungen.
# Konfiguration für alle anderen Verbindungen Standort / { proxy_pass https://umsserver; proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer; proxy_ssl_protocols TLSv1.3; }
-
Die gesamte Konfigurationsdatei:
#map upgrade header
map %https_upgrade $connection_upgrade {
Standard-Upgrade;
'' close;
}
upstream umsserver {
server 192.168.27.96:8443 max_fails=3 fail_timeout=10s;
}
server {
listen 8443 ssl; # Der Parameter 'ssl' weist NGINX an, den Datenverkehr zu entschlüsseln
ssl_certificate ssl/ssl-cert-chain.cer; # Die Datei der Zertifikate (Web)
ssl_certificate_key ssl/cert-key.key; # Die Datei mit dem privaten Schlüssel (Web)
ssl_verify_client optional; ## Die Überprüfung des Zertifikats muss optional sein
ssl_client_certificate ssl/estca.cer; #Zertifikat für die Überprüfung von Client Zertifikaten
access_log /var/log/nginx/ssl-access.log;
error_log /var/log/nginx/ssl-error.log;
# Konfiguration für Verbindungen über WebSocket, die Upgrade-Header-Informationen müssen von NGINX geschrieben werden
location ~ /device-connector/device/(ws-connect|portforwarding) {
proxy_pass https://umsserver;
proxy_set_header X-SSL-CERT $ssl_client_escaped_cert;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Verbinden $connection_upgrade;
proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer;
# TLSv1.3 Konfiguration wird empfohlen, ist aber nicht notwendig
proxy_ssl_protocols TLSv1.3;
}
# Konfiguration für alle anderen Verbindungen
Standort / {
proxy_pass https://umsserver;
proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Verbinden $connection_upgrade;
proxy_ssl_protocols TLSv1.3;
# proxy_ssl_session_reuse on;
}
}