Für die Einrichtung eines Reverse-Proxy können wir keinen Support leisten. Diese Anleitung wurde nach bestem Wissen erstellt, kann jedoch nach Updates der Plattformen variieren!

note

Standardmäßig wird bei aktiviertem HTTPS-Zugriff auf FE2 ein von FE2 generiertes Zertifikat verwendet. Dadurch erscheint die Adressleiste im Browser aber in rot, was bei einem externen Zugriff nicht ideal ist.

Standardmäßig wird bei aktiviertem HTTPS-Zugriff auf FE2 ein von FE2 generiertes Zertifikat verwendet. Dadurch erscheint die Adressleiste im Browser aber in rot, was bei einem externen Zugriff nicht ideal ist.

Der externe Zugriff auf FE2 aus dem Internet ist nicht zwingend notwendig! Vieles kann innerhalb des lokalen Netzwerks oder z. B. per VPN-Vebindung umgesetzt werden.

Ein externer Zugriff ist nur notwendig, wenn Sie keine VPN-Verbindung nutzen können und:

  • Sie die App “Mobiler Alarm” von außerhalb des FE2 Netzwerks verwenden möchten

  • Sie die App “aMobile PRO” von außerhalb des FE2 Netzwerks synchronisieren möchten

  • Sie ein FE2-System für mehrere Organisationen betreiben und die Organisationen Ihre Daten selbst pflegen sollen

  • Sie Eingangsschnittstellen verwenden möchten, die auf HTTP- bzw. TCP/IP Basis Daten an FE2 übermitteln sollen


Verwenden eines zusätzlichen Webservers, der das Zertifikat ausliefert

Laden Sie sich einen Webserver (z. B. Apache) herunter oder verwenden Sie bei Windows-Server Betriebssystemen alternativ IIS. Dieser wird dem FE2-Server mittels Reverse Proxy vorgeschaltet und übernimmt die SSL-Verschlüsselung. FE2 braucht dabei keine aktivierte SSL-Verbindung. Hier eine kurze Darstellung, wie der Aufbau aussieht:

Checkliste Vorbedingungen für alle Varianten

Nachfolgend finden Sie eine Checkliste für alle Vorbedingungen, die für eine Einrichtung anhand der nachfolgenden Einrichtung erforderlich sind. Diese Checkliste kann als Hilfe für eine eigenständige Einrichtung verwendet werden, aber auch für eine beauftragte Einrichtung durch uns. Sprechen Sie uns im Falle einer geführten Einrichtung gerne auf unklare Punkte an. Nur bei vollständiger Vorlage alle Informationen kann eine Einrichtung durchgeführt werden.

SSL-Zertifikat mit Apache

Folgende Einstellungen müssen dann in der Apache Config vorgenommen werden:

In der httpd.conf müssen folgende Module geladen werden, sofern diese noch nicht einkommentiert wurden:

httpd.conf

LoadModule headers_module modules/mod_headers.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so

[...]

# Dieser Teil sollte bereits existieren, hier muss sichergestellt sein, dass die hier genannte Datei inkludiert wird
<IfModule ssl_module>
	Include conf/extra/httpd-ssl.conf
</IfModule>

Anschließend kann in der httpd-ssl.conf der folgende Teil eingefügt werden (bestehenden Inhalt komplett ersetzen)

httpd-ssl.conf

Listen 443

# SSL Cipher Suite
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+AESGCM EECDH EDH+AESGCM !EDH+aRSA HIGH !MEDIUM !LOW !aNULL !eNULL !LOW !RC4 !MD5 !EXP !PSK !SRP !DSS"
SSLProxyCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+AESGCM EECDH EDH+AESGCM !EDH+aRSA HIGH !MEDIUM !LOW !aNULL !eNULL !LOW !RC4 !MD5 !EXP !PSK !SRP !DSS"
   
# Prevent CRIME/BREACH compression attacks
SSLCompression Off

SSLHonorCipherOrder on 

# SSL Protocol support
#SSLProtocol all -SSLv3 -TLSv1
#SSLProxyProtocol all -SSLv3 -TLSv1
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3

# Pass Phrase Dialog
SSLPassPhraseDialog  builtin

# Inter-Process Session Cache:
SSLSessionCache "shmcb:logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

##
## SSL Virtual Host Context
##

SSLStrictSNIVHostCheck off

<VirtualHost *:443>   

   #General setup for the virtual host
   ServerName my.domain.de
   ErrorLog "logs/my.domain.de-error.log"
   CustomLog "logs/my.domain.de-access.log" common   
   Header always add Strict-Transport-Security "max-age=31536000; preload"

   #SSL Engine Switch:
   SSLEngine on      

   #Server Certificate:
   SSLCertificateFile "C:/letsencrypt-win-simple/generated_certs/my.domain.de-crt.pem"

   #Server Private Key:
   SSLCertificateKeyFile "C:/letsencrypt-win-simple/generated_certs/my.domain.de-key.pem"

   #Server Certificate Chain:
   SSLCertificateChainFile "C:/letsencrypt-win-simple/generated_certs/ca-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-crt.pem"

   ProxyRequests Off
   ProxyPreserveHost On
   SSLProxyEngine on
   SSLProxyCheckPeerName off
   SSLProxyCheckPeerCN off
   SSLProxyCheckPeerExpire off
   SSLsecureRenegotiation on
   SSLProxyVerify none
   SSLVerifyClient none
    
    <Proxy *>
      Require all granted
    </Proxy>
      
   AllowEncodedSlashes On
   ProxyPass       		/ http://my-fe2-server:83/ nocanon
   ProxyPassReverse   	/ http://my-fe2-server:83/ nocanon
   BrowserMatch "MSIE [2-6]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
       
    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

	#Rewrite for websockets (Live-Verbindung)
    RewriteEngine on
	RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
	RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
	RewriteRule .* ws://my-fe2-server:83%{REQUEST_URI} [P]
</VirtualHost>

 Für nginx sind folgende Einstellungen in "location" Konfiguration notwendig:

location / {
    proxy_pass http://my-fe2-server:83;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
   }

Achten Sie darauf, in den hier bereitgestellten Config-Dateien den Wert "my-fe2-server" durch den Hostnamen des FE2 Systems zu ersetzen, wenn der Proxy auf einem anderen System läuft.

Der Wert "my.domain.de" muss ebenfalls angepasst werden. Hier muss der verwendete externe DNS-Name (DynDNS,...) angegeben werden (z. B. meine.feuerwehr-stadt.de).

Passen Sie dann auch die externe Adresse in der FE2 Administration an: Webzugriff

SSL-Zertifikat mit IIS (Internet Information Services) (empfohlen)

Mit dem mitgelieferten Webserver IIS bei Windows-Server Betriebssystemen lässt sich eine sichere Seite nach außen aufbauen ohne bei FE2 SSL aktiviert zu haben. Folgende Schritte sind vor der Konfiguration durchzuführen:

Windows 10/11

Bitte beachten Sie, dass es bei den Windows-Versionen für Endandwender (nicht Windows-Server) eine Beschränkung der maximal gleichzeitig erlaubten Verbindungen gibt. Diese sind wie folgt:

  • Windows 10 Home: 3

  • Windows 10 Pro/Enterprise: 10

  • Windows 10 IoT Enterprise 2016/2019: 10

Sollten Sie z. B. 3x AMweb über Direktverbindung verwenden, können Sie nicht mehr auf die Weboberfläche von FE2 zugreifen

Drücken Sie “Windows-Taste + R” und geben “OptionalFeatures” ein. Drücken Sie dann auf “Enter” oder klicken Sie auf “OK”.

Im sich öffnenden Fenster klicken Sie auf den Eintrag “Internet Informations Dienste (IIS)” und wählen dann im untergeordneten Menü “Websockets Protokoll” aus (siehe untenstehende Grafik):

Klicken Sie anschließend auf “OK” um die Features zu installieren. Ggf. wird ein Rechnerneustart benötigt. Führen Sie diesen aus, wenn Sie dazu aufgefordert werden.

Windows Server 2016 und neuer

Aktivieren der IIS-Serverrolle, wenn noch nicht geschehen
Auf einem Windows Server erreicht man dies schnell über den ServerManager

Installation der erforderlichen Module

  1. Download der Application-Request-Routing und Reverse-Proxy Module

    1. Download URL-Rewrite-Modul: https://www.iis.net/downloads/microsoft/url-rewrite

    2. Download Application-Request-Routing-Modul: https://www.iis.net/downloads/microsoft/application-request-routing

  2. Installation der beiden heruntergeladenen Module

Einrichtung SSL-Zertifikat mit Let's Encrypt

Folgen Sie dieser Anleitung, um ein Zertifikat zu erstellen, welches sich automatisch erneuert. Zunächst bearbeiten wir die Default Web Site im IIS-Manager. Klicken Sie dazu im rechten Menüband auf “Bindungen”:

Anschließend öffnet sich das unten gezeigte Fenster.


Unter Hostname, muss der DNS Eintrag eingetragen werden, unter dem das System über das Internet erreicht werden kann. Natürlich muss hier zuvor eine entsprechende Eintragung beim jeweiligen DNS Registrar erfolgen (A-Record), DynDNS Einträge sind auch möglich.

Vergessen Sie nicht den IIS-Server nach Änderungen neuzustarten. Dies geht ebenfalls über den IIS-Manager.

Nach der Änderung muss die Standardwebseite des IIS unter dem zuvor eingegebenen Hostnamen erreichbar sein. Ist dies nicht der Fall, so prüfen Sie bitte die (Windows-)Firewall-Einstellungen oder andere Firewall Appliances. Vergessen Sie zudem nicht ein Port Forwarding am Router auf Port 80 UND 443 einzurichten. Wenn dieser Funktionstest nicht erfolgreich ist, kann die Anleitung nicht weitergeführt werden.

Übrigens: An dieser Stelle genügt die Bindung auf Port 80 (HTTP). 443 (HTTPS) wird später vom Let's Encrypt Tool erstellt, welches wir nun herunterladen unter https://github.com/win-acme/win-acme/releases/download/v2.1.17.1065/win-acme.v2.1.17.1065.x64.trimmed.zip

Das heruntergeladene Tool wird entpackt und anschließend ausgeführt (wacs.exe) Das Tool benötigt mindestens das .net Framework 4.7.2 (Zum Zeitpunkt dieses Artikels) und muss ggf. noch installiert werden, sonst startet die wacs.exe nicht.

Die wacs.exe muss in einem Konsolenfenster gestartet werden (cmd.exe) als Administrator. Ein einfacher Doppelklick genügt nicht.

Innerhalb des Tools wählen wir nacheinander die folgenden Optionen

An dieser Stelle muss ein Aufruf des o.g. Hostnamens mit https:// also (z.B. https://meinsystem.feuerwehr.de) vorangestellt möglich sein. Sollte dies nicht möglich sein, so prüfen Sie Firewall und Port Forwardings (443). Zudem muss die Browserleiste keinen Zertifikatsfehler anzeigen

Wenn dieser Test funktioniert, können Sie mit dem nächsten Schritt fortfahren.

Weitere Konfiguration des IIS

Öffnen Sie den IIS-Manager und klicken Sie auf die Default Web Site:


Öffnen Sie anschließend über das rechte Fenster das Modul "URL-Rewrite" mit einem Doppelklick:

Fügen Sie über das rechte Aktionen-Menü eine neue Regel hinzu und wählen Sie anschließend "Reverse Proxy":

 

Beim ersten Öffnen wird gefragt, ob der IIS Manager das zuvor installierte ARR-Modul aktivieren soll. Bestätigen Sie dies mit "Ja" und beenden Sie den Dialog wieder. 

Sollten Sie bei der Aktivierung eine Fehlermeldung erhalten, testen Sie die manuelle Installation einer ARR-Modul Abhängigkeit. Diese finden Sie hier verlinkt: Download Microsoft Application Request Routing 3.0 (x64) from Official Microsoft Download Center

Dieser Schritt ist unbedingt notwendig und die Voraussetzung für die Konfiguration per Config-Datei. Wird nur die Config-Datei kopiert weiter unten kopiert, so wird der Reverse Proxy Mechanismus nicht funktionieren.

Bevor sie die unten stehende Config nun kopieren, führen Sie noch folgenden Schritt durch:

Klicken Sie im rechten Menü auf "Servervariablen anzeigen" und dann auf "Hinzufügen":

 


Geben Sie im darauffolgenden Fenster den Wert 

HTTP_SEC_WEBSOCKET_EXTENSIONS

ein und bestätigen Sie das Fenster mit "OK".

Klicken Sie anschließend wieder im rechten Menü auf "Zu Regeln zurückkehren"

Nun können Sie die nachfolgende Konfiguration kopieren. Befolgen Sie dabei die Schritte, die unterhalb der Config aufgelistet sind.

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules useOriginalURLEncoding="false">
                <clear />
                <rule name="HTTP zu HTTPS" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="^OFF$" />
                        <add input="{HTTP_HOST}" pattern="meinsystem.feuerwehr.de" />
                        <add input="{REQUEST_URI}" pattern="/.well-known*" negate="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
                </rule>
                <rule name="ReverseProxyboundRule1" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="http://localhost:83{UNENCODED_URL}" appendQueryString="false" />
					<serverVariables>
                        <set name="HTTP_SEC_WEBSOCKET_EXTENSIONS" value="" />
                    </serverVariables>
                </rule>
            </rules>
            <outboundRules>
                <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:83/(.*)" />
                    <action type="Rewrite" value="http{R:1}://meinsystem.feuerwehr.de/{R:2}" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
        <urlCompression doStaticCompression="false" doDynamicCompression="false" />
    </system.webServer>
</configuration>

Ersetzen Sie in dieser Datei beide Vorkommnisse von meinsystem.feuerwehr.de mit dem von Ihnen eingesetzten Hostnamen.

Kopieren Sie diese Datei anschließend mit dem Dateinamen web.config in das Wurzelverzeichnis der Default Website. Den Order können Sie sehr einfach folgendermaßen öffnen:

Die Dateistruktur des Wurzelverzeichnisses sollte anschließend so aussehen, der wwwroot Pfad kann natürlich an einem anderen Ort liegen

Starten Sie anschließend die Default Website erneut, ggf. auch den IIS-Server.

Standardkonfiguration für SSL/TLS des IIS absichern

Standardmäßig ist die HTTPS-Verschlüsselung des IIS so eingerichtet, dass möglichst viele unterschiedliche Client sich verbinden können, ohne Verschlüsselungsfehler zu erhalten. Dies ist aber hauptsächlich auf ältere Geräte zurückzuführen, die moderne Protokolle und Verschlüsselungsalgorithmen nicht unterstützen. Da die alten Verschlüsselungsalgorithmen aber nicht mehr sicher sind, sollten diese abgeschaltet werden.

Hierfür gibt es ein kostenloses Tool namen “IISCrypto”, welches Sie auf folgender Seite herunterladen können: Nartac Software - IIS Crypto

Laden Sie hier das Tool “IISCrypto GUI” herunter und starten Sie dieses. Klicken Sie anschließend unten links auf “Best Practices”. Anschließend sollten die Einstellungen wie folgt aussehen:

Klicken Sie anschließend auf “Apply” und starten Sie den Computer anschließend neu, damit die Änderungen übernommen werden. Ein Neustart des IIS-Servers reicht an dieser Stelle nicht aus.

Striktere Absicherung

Wollen Sie die Verschlüsselung noch sicherer machen, können Sie folgende Schritte zusätzlich ausführen:

Deaktivieren von TLS 1.0 und TLS 1.1

Es hat sich bewährt die Protokolle “TLS 1.0” sowie “TLS 1.1” bei “Server Protocols” und “Client Protocols” zu deaktivieren. Dadurch wird ausschließlich der aktuelle Standard TLS 1.2 für die Verschlüsselung verwendet. Klicken Sie anschließend auf “Apply” und starten den Rechner neu.

Sollten Sie anschließend Probleme haben mit Browsern oder Endgeräten zuzugreifen, aktivieren Sie zuerst TLS 1.1 und versuchen es erneut. Sollte das auch nicht helfen, aktivieren Sie TLS 1.0

Deaktivieren von 128bit Verschlüsselung

128bit-Verschlüsselung ist aktuell noch in Verwendung, da aber mittlerweile so gt wie alle Geräte eine 256bit-Verschlüsselung unterstützen, kann die 128bit-Verschlüsselung deaktiviert werden.

Klicken Sie hierzu auf den Eintrag “AES 128/128” im Kasten “Ciphers” und deaktivieren Sie diesen. Wechseln Sie nun im linken Menü au “Cipher Suites” und deaktivieren Sie alle Einträge mit Ausnahme der nachfolgend angezeigten:

Die markierten Einträge müssen aktiv bleiben.

Klicken Sie anschließend auf “Apply” und starten den Rechner neu.

Sollten Sie anschließend Probleme haben mit Browsern oder Endgeräten zuzugreifen, laden Sie die Best Practices erneut, wenden diese an und starten den Rechner neu.

SSL-Zertifikat mit Synology NAS

Diese Anleitung wurde uns von einem Kunden zur Verfügung gestellt und wurde von uns nicht getestet. Der Text der Anleitung wurde so weit wie möglich aus dem Original übernommen und von uns an entsprechenden Stellen durch Links auf die dazugehörigen Handbuchseiten ergänzt.

Hilfe zu dieser Anleitung erhalten Sie im Kundenforum unter https://board.alamos-gmbh.com/viewtopic.php?f=57&t=5790

Hintergrund

Wir haben ein Synology NAS bei uns im Einsatz, hierfür werden die Ports 80 und 443 bereits auf dieses NAS weitergeleitet. Hier sind diverse Let’s Encrypt Zertifikate im Einsatz.

Problem

Ein lokal installierter Reverse-Proxy auf dem FE2 Rechner (Option 1 und 2 dieser Handbuchseite) erfordern, dass Port 80 und 443 dauerhaft auf den FE2 Rechner weitergeleitet werden müssen, damit das Let’s Encrypt Zertifikat automatisch verlängert werden kann. Da diese Ports bereits auf das Synology NAS weitergeleitet werden, kann dies nicht funktionieren.

Lösung

Reverse-Proxy Funktion des Synology NAS verwenden. Es muss nichts zusätzlich auf dem FE2 Rechner konfiguriert oder installiert werden. Der Ablauf läuft dann wie hier dargestellt, nur das der Apache Web Server durch das Synology NAS ersetzt wird:

Vorbedingungen

Siehe Checkliste Vorbedingungen für alle Varianten

Alles genauso wie in der Datei „HTTPS Zugriff Anfoderungen.xlsx“ beschrieben außer:

Port Forwarding

Eingerichtetes Port Forwarding von extern zum FE2 Server
 
Port 443 extern zu Port 443 an Synology NAS
Port 80 extern zu Port 80 an Synology NAS

Zusammenfassung der Vorbedingungen

Anleitung


Live-Verbindung FE2

Damit die Live-Verbindung zu FE2 funktioniert (erkennbar am grünen Punkt neben dem User in der Weboberfläche) muss noch folgendes aktiviert werden:

In der zweiten Proxy-Regel (die HTTPS Weiterleitung auf FE2 Port 83) muss ein Benutzerdefinierter Header erstellt werden, hierfür auf den kleinen Pfeil neben „Erstellen“ klicken und „Websocken“ auswählen:

Die Headernamen und Werte werden automatisch ausgefüllt, man muss nur noch auf OK klicken:

Let’s Encrypt Zertifikate auf Synology NAS nutzen

Um Let’s Encrypt erstmalig auf dem NAS zu nutzen empfehle ich folgende Anleitung:;

https://idomix.de/synology-diskstation-lets-encrypt-ssl-zertifikat-installieren

Wenn ihr bereits Let’s Encrypt Zertifikate verwendet, so könnt ihr unter „Systemsteuerung“ → „Sicherheit“ und dem Reiter „Zertifikat“ einfach für eure FE2 DynDNS Adresse ein neues Zertifikat erstellen:

Zum Abschluss müsst ihr das neu erstellte Zertifikat eurer DynDNS Adresse zuordnen. Dies wird über den Button „Konfigurieren“ möglich:

Fertig

Vorausgesetzt, dass FE2 gestartet wurde, sollte FE2 nun unter der externen Adresse mit HTTPS erreichbar sein. Mit dieser Methode ist das Webinterface innerhalb des lokalen Netzwerks zwar nicht verschlüsselt, nach extern zeigt es aber eine grüne Adresszeile und die Kommunikation erfolgt verschlüsselt. Benutzerpasswörter können also nicht "belauscht" werden. 

Eigenes Zertifikat verwenden

Wenn Sie ein eigenes Zertifikat haben, so benötigen Sie hierfür sowohl den öffentlichen Teil als auch den privaten Teil des Schlüssels.

Dieses Zertifikat muss anschließend in eine JSK (Java Keystore) Datei konvertiert werden, welche sich am besten mit dem KeyStore Explorer bearbeiten lässt.

Um einen neuen KeyStore zu erstellen, wählen Sie den Typ des Schlüsselsspeichers JKS aus.

Anschließend können Sie via Drag&Drop das Zertifikatspaar kopieren. Der Name des Eintrages muss hierbei fe2 lauten.

image-20240408-064241.png

Schützen Sie den Eintrag selbst mit demselben Passwort, wie das Passwort des eigentlichen KeyStores.

image-20240408-064341.png

Dieses Passwort müssen Sie anschließend in FE2 in den Webserver-Einstellungen hinterlegen.