Nachfolgende Konfigurationsbeispiele und Erläuterungen sind als Hilfestellung für Einrichtung und Konfiguration bei der Veröffentlichung des UCServer und die Einrichtung der ProCall Mobile Apps für den Zugriff von extern (außerhalb des lokalen Netzwerks) gedacht.

Sie betreffen nicht die estos Software selbst und werden daher ohne Gewähr und ohne Support durch die estos GmbH zur Verfügung gestellt.

Welchen https Reverse-Proxy kann ich einsetzen?

Grundsätzlich können alle standardkonformen http Reverse-Proxy Server verwendet werden, die http GET und POST und Websocket Verbindungen (RFC 6455) ermöglichen.

Als Hilfestellung wird hier konkret auf die Einrichtung von zwei verschiedenen Proxy-Servern eingegangen. Je nach Fähigkeiten und Präferenzen können sowohl Microsoft Windows als auch Linux als Betriebssystem gewählt werden.

Microsoft Windows kompatibel

  • Microsoft Internet Information Services (IIS)

Linux kompatibel

  • nginx

Was muss ich im UCServer konfigurieren?

IP Ports festlegen

In der UCServer Verwaltung können Sie im Menü unter Extras >> Netzwerkschnittstellen die Netzwerkeinstellungen des UCServers einsehen und ändern. In der Standardeinstellung beantwortet der UCServer Anfragen über http auf Port 7224 und https auf Port 7225. Im Normalfall muss diese Einstellung nicht geändert werden.

SSL Zertifikat hinterlegen

Im Falle eines eines http Reverse-Proxy werden alle Anfragen aus dem Internet zuerst vom Proxy entgegengenommen und danach an den UC WebService weitergeleitet, damit ist der Proxy auch für die Verschlüsselung der Verbindung verantwortlich. Wir empfehlen dringend den Einsatz von https mit einem vertrauenswürdigen SSL Zertifikat. Falls notwendig beantragen Sie ein SSL Zertifikat für Ihren DNS-Namen bei einer öffentlichen Zertifizierungsstelle. Falls Sie mit einem selbst signierten Zertifikat („Self Signed Certificate“) arbeiten, ist die Verbindung verschlüsselt, aber nicht abhörsicher und die Nutzung von Browser Applikationen ist nicht möglich.

Je nach Anforderung können Sie die Anfragen innerhalb Ihres LAN über unverschlüsseltes http oder mit TLS Verschlüsslung weiterleiten. Sollten Sie auch innerhalb Ihres LAN eine verschlüsselte Verbindung bevorzugen, können Sie in der UCServer Verwaltung im Menü unter Extras >> Netzwerkschnittstellen >> WebService https ein Zertifikat im PFX Format hinterlegen.

Konfigurationsbeispiele http-Reverse Proxy 

Microsoft Internet Information Services (IIS)

Voraussetzungen

Installation und Vorbereitung Microsoft Internet Information Services (IIS)

  1. Installieren Sie den Microsoft Internet Information Services (IIS) auf dem gewünschten Server. Laden Sie dazu entweder das Installationspaket herunter oder fügen Sie die Rolle über die Serververwaltung hinzu.
  2. Fügen Sie das Feature WebSocket Protocol hinzu.
  3. Installieren Sie das Application Request Routing (ARR) Paket.
  4. Installieren Sie das URL Rewrite Modul.
  5. Konfiguration Microsoft Internet Information Services (IIS)
  6. Um die Proxy-Funktion herzustellen, müssen im nächsten Schritt alle beteiligten Komponenten eingerichtet und entsprechend Ihrer Infrastruktur konfiguriert werden.
SSL Zertifikat konfigurieren

Es wird empfohlen, ein vertrauenswürdiges SSL-Zertifikat zu verwenden. Richten Sie ein Server Zertifikat für den IIS ein, gehen Sie dabei wie von Microsoft vorgeschlagen vor: https://technet.microsoft.com/en-us/cc731977

Einrichten einer Reverse Proxy Webseite

  1. Fügen Sie eine neue Webseite hinzu.
  2. Füllen Sie die notwendigen Felder aus.
    1. Die Pfad-Angabe ist nicht sonderlich relevant, da keine Webseite ausgeliefert wird. Der IIS wird dennoch trotzdem eine web.config Datei anlegen. estos empfiehlt den Pfad: C:\inetpub\wwwroot\ReverseProxy
    2. Verwenden sie https als Binding Type
    3. Hinterlegen Sie den Host Name, der Ihrem DNS-Eintrag und Zertifikat entspricht.
    4. Wählen Sie das vorher hinterlegte Zertifikat aus.
  3. URL - Doppel-Klicken Sie auf die neu angelegte Webseite und öffnen Sie URL Rewrite
  4. Klicken Sie Add Rule(s)… und wählen Sie Reverse Proxy
  5. Wenn Sie folgende Warnung erhalten "Proxy Functionality must be enabled... ", bestätigen Sie mit OK.
  6. Rewrite Modul konfigurieren: Machen Sie im nächsten Dialog Angaben, wohin die Anfragen umgeleitet werden sollen
    1. Tragen Sie unter Inbound Rules den DNS-Namen oder die IP-Adresse ein, auf die die Anfragen umgeleitet werden sollen (z. B. UCServer, Firewall). Ergänzen Sie außerdem den gewünschten Port.

    2. Wenn Sie SSL Offloading aktivieren, werden die Anfragen unverschlüsselt weitergeleitet. Im Rahmen der weiteren Ausführungen wird davon ausgegangen, dass die Option aktiviert wurde.
    3. Fügen Sie auf diesem Weg zwei identische Regeln hinzu:
    4. Öffnen Sie die oberste Regel mit einem Doppel-Klick und editieren Sie Match URL und Action
      1. Unter Match URL muss ein Regulärer Ausdruck hinterlegt werden, um das Upgrade der http(s) auf eine ws(s) Verbindung abzubilden. Tauschen Sie bei folgender Vorlage <DNS NAME> mit Ihrem DNS Eintrag aus.
        ^(.+)s://<DNS NAME>/ws/client/websocket(.*)
      2. Unter Action definieren Sie, wie die URL umgeschrieben wird und an welchen DNS-Namen oder welche IP-Adresse die Anfrage weitergeleitet wird.
        Tauschen Sie bei folgender Vorlage <REWRITE TARGET> mit dem gewünschten Weiterleitungsziel und <PORT> mit dem konfigurierten Port.
        (R:1)://<REWRITE TARGET>:<PORT>/ws/client/websocket{R:2}
      3. Aktivieren Sie Stop processing of subsequent rules.
  7. Rewrite Modul konfigurieren: Öffnen Sie die zweite Regel mit einem Doppel-Klick und editieren Sie Match URL und Action
      1. Unter Match URL muss ein Regulärer Ausdruck hinterlegt werden, der alle vom ersten Ausdruck nicht erfassten Anfragen trotzdem weiterleitet. Eine Anpassung der Vorlage ist nicht notwendig.
        (.*)
      2. Unter Action definieren Sie, wie die URL umgeschrieben wird und an welchen DNS-Namen oder welche IP-Adresse die Anfrage weitergeleitet wird. Tauschen Sie bei folgender Vorlage <REWRITE TARGET> mit dem gewünschten Weiterleitungsziel und <PORT> mit dem konfigurierten Port http://<REWRITE TARGET>:<PORT>/ {R:1}

nginx

Installation nginx

Installieren Sie nginx über die Paketverwaltung Ihrer Linux Distribution, z. B. auf Ubuntu:

$ sudo apt-get update

$ sudo apt-get install nginx

Konfiguration nginx

  1. Legen Sie unter /etc/nginx/sites-Available eine neue Konfigurationsdatei mit Namen reverseproxy an und kopieren Sie die unten beschriebene Beispielkonfiguration in die Datei.

  2. Es wird empfohlen, ein vertrauenswürdiges SSL-Zertifikat zu verwenden. Ergänzen Sie die SSL-Konfiguration gemäß http://nginx.org/en/docs/http/configuring_https_servers.html.
  3. Tauschen Sie in dem Beispiel <DNS NAME> mit Ihrem DNS Eintrag, <REWRITE TARGET> mit dem gewünschten Weiterleitungsziel und <PORT> mit dem konfigurierten Port aus.
  4. Aktivieren Sie die Konfiguration, indem Sie unter /etc/nginx/sites-enabled einen symbolischen Link auf die Konfigurationsdatei erzeugen:
    $ cd /etc/nginx/sites-enabled
    $ sudo ln -s /etc/nginx/sites-Available/reverseproxy reverseproxy
  5. Starten Sie den nginx Dienst neu.
    sudo systemctl restart nginx.service
    oder
    sudo service nginx restart

Beispielkonfiguration nginx

server {

    listen  80;

    server_name <DNS NAME>;

    rewrite ^ https://$server_name$request_uri? permanent;

}

server {

      listen 443 ssl;

      server_name <DNS NAME>;

ssl on;

      ssl_certificate /etc/ssl/certs/fullchain.pem;

      ssl_certificate_key /etc/ssl/certs/privkey.pem;

index index.html index.htm;

      proxy_read_timeout 3600s;

     

      # https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

      add_header Strict-Transport-Security max-age=63072000;

      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

      ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

      ssl_prefer_server_ciphers on;

      ssl_session_cache shared:SSL:10m;

      # DHE generated with

      # cd /etc/ssl/certs && openssl dhparam -out dhparam.pem 4096

      ssl_dhparam /etc/ssl/certs/dhparam.pem;

 

      location / {

             proxy_set_header X-Real-IP $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             proxy_set_header Host $http_host;

             proxy_set_header X-NginX-Proxy true;

             proxy_pass http://<REDIRECT TARGET>:<PORT>;

             proxy_redirect off;

      }

      location /ws/client/websocket {

             proxy_pass http://<REDIRECT TARGET>:<PORT>;

             proxy_http_version 1.1;

             proxy_set_header Upgrade $http_upgrade;

             proxy_set_header Connection "upgrade";       

      }

}