Verschlüsselter Zugriff per HTTPS/SSL

veraltet - update erforderlich

nur relevant für MS Gen 1

 @Michael Schlenstedt bitte aktualisieren oder löschen lassen
@Maximilian Weißböck  Die aktualisierte Anleitung steht hier: https://www.loxforum.com/forum/faqs-tutorials-howto-s/10918-howto-miniserver-per-https-erreichbar-machen-apache-reverse-proxy/page2 Hab aber im Moment keine Zeit das zu testen. 

Diskussionen über diese Anleitung bitte im LoxForum führen: https://www.loxforum.com/forum/faqs-tutorials-howto-s/10918-howto-miniserver-per-https-erreichbar-machen-apache-reverse-proxy



Achtung! Ein verschlüsselter Zugriff auf die Weboberfläche stellt keinen ausreichenden Schutz dar um seinen Miniserver von Extern erreichbar zu machen und "aus dem Internet" auf den Miniserver zuzugreifen! Die Übertragung erfolgt zwar verschlüsselt, der Miniserver ist aber trotzdem direkt für alle aus dem Internet erreichbar und somit ein direktes Angriffsziel!

Nur eine gesicherte VPN-Verbindung bietet ausreichenden Schutz, um den Miniserver von Extern aus erreichbar zu machen!



Die nachfolgende Anleitung beschreibt, wie man mit Hilfe eines Proxy-Servers auf Apache-Basis (Reverse-Proxy) den Miniserver über eine per SSL gesicherte (verschlüsselte) Verbindung erreichbar machen kann. Der Zugriff auf das Webinterface ist so verschlüsselt möglich. Der Apache-Server muss dabei im lokalen Netz installiert werden, z. B. auf einem RaspberryPi oder einem vorhandenen NAS-Server.

Wer seinen Miniserver per HTTPS erreichbar machen möchte kann das über einen kleinen Proxyserver (z. B. auf einem Raspberry) einrichten. Die HTTPS-Verbindung wird dabei über den aProxy abgewickelt. Dieser leitet im Prinzip die Anfragen dann per HTTP (unverschlüsselt) weiter an den Miniserver.

Voraussetzungen:

  1. Der Proxy muss extern erreichbar sein

  2. Webserver Apache 2.4.5 oder höher (das neueste Raspbian bzw. Debian GNU/Linux 8 ist damit ausgestattet)

  3. Etwas Erfahrung beim Einrichten des Apache

  4. Die Classic-Version der Weboberfäche


Die folgende Anleitung funktioniert nur, wenn Du noch die Classic-Weboberfläche verwendest! Für die neue Webanwendung im Design der LoxoneApp V4 und neuer existiert leider noch keine Lösung. Sobald eine Lösung im Loxone Forum veröffentlicht wird, wird sie auch hier ergänzt werden.

Wie Du auf die Classic-Weboberfläche wechseln kannst, ist in diesem Posting im Loxone Forum beschrieben: https://www.loxforum.com/forum/german/software-konfiguration-programm-und-visualisierung/30851-v-7-3-und-altes-webinterface?p=33125#post33125



Einrichten:

Miniserver über eine feste IP-Adresse im Netzwerk erreichbar machen (kein DHCP).

Apache konfigurieren. Dazu den entsprechenden virtuellen Server erweitern. Oft liegt die entsprechende Konfigurationsdatei unter /etc/apache2/sites-available/default-ssl.conf. In diesme Beisoiel ist der Miniserver später über die URL https://DEINPROXYSERVER/miniserver erreichbar.


# SSL Support aktivieren SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off SSLProxyCheckPeerExpire Off # Reverse Proxy fuer Miniserver ProxyPass /miniserver/login.js ! ProxyPass /miniserver/internal.min.js ! ProxyPass /miniserver/ws ws://LOKALE_IP_MINISERVER/ws/ ProxyPass /miniserver/ http://LOKALE_IP_MINISERVER/ ProxyPassReverse /miniserver/ http://LOKALE_IP_MINISERVER/



Entsprechende Apache-Module aktivieren:


sudo a2ensite loxone sudo a2enmod ssl sudo a2enmod proxy sudo a2enmod proxy_wstunnel sudo apache2ctl configtest



Apache neu starten:


sudo /etc/init.d/apache2 reload



Nun im DocumentRoot des Apache das Verzeichnis "miniserver" anlegen. Normalerweise liegt der DocumentRoot unter /var/www.




Nun muss man 2 Dateien vom Miniserver herunterladen und lokal auf dem Proxy speichern. Achtung! Wenn man einen Versionswechsel auf dem Miniserver macht, sind die nachfolgenden Schritte jedas mal wieder auszuführen! Diese beiden Dateien müssen noch angepasst werden. Der Proxy (siehe oben) ist so konfiguriert, dass er diese beiden Dateien nicht vom Miniserver ausliefert sondern seine eigenen versionen an den Browser des Clients zurückliefert.




Beide Dateien muss man nun mit einem Texteditor öffnen. Man sucht zunächst nach "ws://" und ersetzt dieses durch durch("https:"==document.location.protocol ? "wss" : "ws") + "://" und anschließend sucht ihr noch nach window.location.host + "/ws/" und ersetzt es durch window.location.host + "/miniserver/ws/". Jetzt sucht ihr in beiden Dateien noch nach allen Stellen mit window.location.replace("/"); und ändert das ab in window.location.replace("/miniserver/");.

Das war's.

Getestet mit: 7.1.9.30