Skip to main content
Skip table of contents

NGINX - Beispielkonfiguration für Reverse Proxy in IGEL OS mit SSL Offloading

Dieser Artikel beschreibt die Konfiguration der IGEL Universal Management Suite (UMS) und von NGINX für SSL Offloading. Sie können dieses Dokument verwenden, wenn die SSL-Verbindung nicht am UMS Server, sondern am Loadbalancer oder Reverse Proxy terminiert werden soll. Die Anleitung basiert auf dem Beispiel von NGINX.

Weitere Informationen zu NGINX finden Sie unter https://www.nginx.com/resources/glossary/nginx/.

Die allgemeine Kompatibilität wurde mit den in diesem Artikel beschriebenen Konfigurationen getestet. Es kann jedoch auch andere Möglichkeiten zur Umsetzung der Konfiguration geben.
Da es sich beim Reverse Proxy um eine externe Software handelt, kann kein vollständiger Support für jede Version angeboten werden.


Anforderungen

Die Anforderungen an die UMS sowie an die Zertifikatkonfiguration für den Reverse Proxy sind in UMS zur Integration von Reverse Proxy mit SSL Offloading konfigurieren zusammengefasst.

Prozessübersicht

Die Konfigurationsschritte für den Reverse Proxy umfassen:

Installation von NGINX (Beispiel auf Basis von Ubuntu)

→ Installieren Sie NGINX auf Ihrem System:

TEXT
sudo apt update
sudo apt install nginx


→ Wenn eine Firewall verwendet wird, überprüfen Sie die Konfiguration:

  1. Überprüfen Sie die Firewall-Konfiguration:

    TEXT
    sudo ufw app list


    Die Ausgabe des Befehls sollte wie folgt aussehen:

    TEXT
    Output
    Available applications:
    	Nginx Full
    	Nginx HTTP
    	Nginx HTTPS
    	OpenSSH

  2. Aktivieren Sie 'Nginx Full':

    TEXT
    sudo ufw allow 'Nginx Full'

  3. Überprüfen Sie die Firewall-Konfiguration mit

    TEXT
    sudo ufw status

  4. Für die UMS Unterstützung kann es notwendig sein, weitere Ports zu öffnen. Weitere Informationen zu UMS Ports finden Sie unter IGEL UMS Kommunikationsports.

  5. Fragen Sie den aktuellen Status von NGINX ab:

    TEXT
    sudo systemctl status nginx

  6. Überprüfen Sie die aktuelle Konfiguration von NGINX:

    TEXT
    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:

TEXT
http {

## 
# Basic Settings 
## 
sendfile on; 
		... 
## 
# Virtual Host Configs 
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/umsSSLOffloading.conf; # used for configuration
}

Die Schlüssel und Zertifikate, die in UMS zur Integration von Reverse Proxy mit SSL Offloading konfigurieren, können 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 Folgendes enthalten

  • Upstream-Server-Konfiguration

  • Server Konfiguration

  • Standort Konfiguration

Dies ist eine Beispielkonfiguration zur Verwendung mit UMS 12 und IGEL OS 12:

  • Der Block upstream umsserver definiert den UMS Server im Backend.

    TEXT
    upstream umsserver {
    	server 192.168.27.96:8443 max_fails=3 fail_timeout=10s;
    }

  • Der Block Server 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:

    TEXT
    server {
    	listen 		 8443 ssl; # 'ssl' parameter tells NGINX to decrypt the traffic
    	ssl_certificate 			ssl/ssl-cert-chain.cer; # The Certificate File (Web)
    	ssl_certificate_key 		ssl/cert-key.key; # The Private Key File (Web)
    	ssl_verify_client			optional; ## Client Certificate check must be optional
    	ssl_client_certificate  	ssl/estca.cer; #certificate for Client Certificate Check
    
    	access_log 					/var/log/nginx/ssl-access.log;
    	error_log 					/var/log/nginx/ssl-error.log;

  • Es sind mindestens zwei Location-Definitionen erforderlich:

    • Eine Location-Definition ist für alle Verbindungen über WebSocket vorgesehen. Die WebSocket-Verbindung erfordert die Weiterleitung des Client-Zertifikats im Header. Zusätzlich muss ein weiterer Header hinzugefügt werden, der das Upgrade für WebSocket-Verbindungen ermöglicht.

      TEXT
      # Configuration for connections via WebSocket, the upgrade header information must be written by NGINX
        location ~ /device-connector/device/(ws-connect|portforwarding) {
      		proxy_pass https://umsserver;
      		proxy_set_header X-SSL-CERT $ssl_client_escaped_cert; # client certificate in current connection
      		proxy_set_header Upgrade $http_upgrade; # Set upgrade header
      		proxy_set_header Connection $connection_upgrade;
      		proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer; #trusted Cert Chain for UMS connection
      
      		# TLSv1.3 configuration is recommended but not necessary
      		proxy_ssl_protocols TLSv1.3;
       }


    • Location-Definition für alle anderen Verbindungen.

      TEXT
      # Configuration for all other connections
        location / {
       		proxy_pass https://umsserver;
      		proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer;
      		proxy_ssl_protocols TLSv1.3; 
       }


Die gesamte Konfigurationsdatei:

TEXT
#map upgrade header
map %https_upgrade $connection_upgrade {
default upgrade;
'' close;
} 

	upstream umsserver {
		server 192.168.27.96:8443 max_fails=3 fail_timeout=10s;
	}

server {
	listen 		8443 ssl; # 'ssl' parameter tells NGINX to decrypt the traffic
	ssl_certificate		 		ssl/ssl-cert-chain.cer; # The Certificate File (Web)
	ssl_certificate_key 		ssl/cert-key.key; # The Private Key File (Web)
	ssl_verify_client 			optional; ## Client Certificate check must be optional
	ssl_client_certificate		ssl/estca.cer; #certificate for Client Certificate Check

	access_log 					/var/log/nginx/ssl-access.log;
	error_log					/var/log/nginx/ssl-error.log; 

# Configuration for connections via WebSocket, the upgrade header information must be written by NGINX
  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 Connection $connection_upgrade;
	proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer;
	# TLSv1.3 configuration is recommended but not necessary
	proxy_ssl_protocols TLSv1.3;
 } 

# Configuration for all other connections
  location / {
	proxy_pass https://umsserver;
	proxy_ssl_trusted_certificate ssl/ssl-cert-chain.cer;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection $connection_upgrade;
	proxy_ssl_protocols TLSv1.3;
  # proxy_ssl_session_reuse on; 
  } 
}


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.