Zum Ende der Metadaten springen
Zum Anfang der Metadaten

VERALTET - UPDATE ERFORDERLICH

 

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.

sudo mkdir /var/www/miniserver


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.

sudo wget -O /var/www/miniserver/internal.min.js http://LOKALE_IP_MINISERVER/internal.min.js
sudo wget -O /var/www/miniserver/login.js http://LOKALE_IP_MINISERVER/login.js

 

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

 

2 Kommentare

  1. Dom Tor sagt:

    Hallo,

    Bitte diesen AbSatz überarbeiten denn er ist komplett falsch:

    "Achtung! Ein verschlüsselter Zugriff auf die Weboberfläche stellt keinen ausreichenden Schutz dar..."

    1. Zugriff über VPN wäre ebenfalls "Ein verschlüsselter Zugriff auf die Weboberfläche" - der anfang des Absatzes sagt bereits aus das es keinen verschlüsselten zugriff auf die weboberfläche gibt welcher sicher ist... (dazu würde ja auch wohl vpn gehören)


    2. Ist die aussage trotzdem falsch (auch richtig interpretiert) denn:

    Man kann sehrwohl über https auf eine seite zugreifen und dies genauso sicher machen wie einen vpn tunnel - vorallem im umgang als enduser leichter handzuhaben wenn man immer von irgendeinem gerät darauf zugreifen möchte. Stichwort Client Zertifikat! in verbindung mit ssl offloading. Hier entscheidet dann der reverseproxy ob ich überhaupt zum gewünschten ziel komme, habe ich das cert nicht gibts kein routing zum ziel. Ist allerdings schwerer einzustellen als die hier genannte Lösung.

  2. Hallo "Dom Tor",

     

    da Du selbst einen Account hier hast steht es Dir frei den Artikel zu überarbeiten. Das ist das Prinzip eines Wikis. Trotzdem ist wohl klar, wie der Absatz gemeint ist. Natürlich ist VPN auch ein verschlüsselter Zugang, aber der Unterschied zu HTTPS (ohne Zertifikate) dürfte wohl jedem klar sein.

    Deine Argumentation, dass auch mit HTTPS über Zertifikate ein sicherer Zugang möglich ist, ist sicher richtig. Aber: Das ist ein Exot den sicherlich die wenigsten Nutzer wirklich kennen. Die meisten geben in der URL anstelle http eben nur https ein und glauben, dass sie nun 100% geschützt sind. Und das ist definitiv nicht der Fall.

    Warum schreibst Du nicht ein HowTo hier im Wiki zum Zugriff per HTTPS mit Zertifikaten? Dann hätten alle etwas davon.