Ankündigung

Einklappen

INFORMATION

Dieser Bereich ist für fertige Lösungen gedacht. Nutze bitte für Diskussionen die anderen Bereiche.
Mehr anzeigen
Weniger anzeigen

HOWTO: Miniserver per HTTPS erreichbar machen (Apache Reverse Proxy)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HOWTO: Miniserver per HTTPS erreichbar machen (Apache Reverse Proxy)

    Original HOWTO von Emil Brunner: http://forum.loxone.com/showthread.p...4319#post54319

    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

    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.

    Code:
    # 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:

    Code:
    sudo a2ensite loxone
    sudo a2enmod ssl
    sudo a2enmod proxy
    sudo a2enmod proxy_wstunnel
    sudo apache2ctl configtest
    Apache neu starten:

    Code:
    sudo /etc/init.d/apache2 reload
    Nun im DocumentRoot des Apache das Verzeichnis "miniserver" anlegen. Normalerweise liegt der DocumentRoot unter /var/www.

    Code:
    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.

    Code:
    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
    Zuletzt geändert von Prof.Mobilux; 07.Nov.2015, 19:05.
    Bitte stellt Eure Anfragen nicht per PN, ich bevorzuge das Fragen/Antworten im Forum, damit alle etwas davon haben. Vorher lesen: https://www.loxforum.com/forum/proje...en-bitte-lesen

    LoxBerry: https://www.loxwiki.eu/display/LOXBERRY/LoxBerry

  • #2
    Sorry, da kann was nicht stimmen, meiner Meinung nach sind das die "alten" Files. Neu geht es doch eher um
    scripts/script1.js und scripts/vendor.js ? Anyway, werde morgen mal die Ersatzhandler testen..

    Kommentar


    • #3
      Du meinst das neue Webinterface? Das kann sein - ich bin noch auf der Classic Oberfläche! Die neue Visu habe ich nicht getestet.
      Bitte stellt Eure Anfragen nicht per PN, ich bevorzuge das Fragen/Antworten im Forum, damit alle etwas davon haben. Vorher lesen: https://www.loxforum.com/forum/proje...en-bitte-lesen

      LoxBerry: https://www.loxwiki.eu/display/LOXBERRY/LoxBerry

      Kommentar


      • #4
        Zitat von Prof.Mobilux Beitrag anzeigen
        ich bin noch auf der Classic Oberfläche! Die neue Visu habe ich nicht getestet.
        Sorry,ich stehe wohl etwas auf dem Schlauch. Habe ich da eine Wahl? Du schreibst ja Getestet mit: 7.1.9.30
        Mir hat es jedenfalls ungefragt auf die neue Visu umgestellt. Bin auf 7.0.8.17. Und seither habe ich den RevProxy nicht mehr zum Laufen gebracht.
        Eigentlich wäre mir lieber, wenn Loxone direkt TLS unterstützen würde. Für smtp/STARTTLS wären die Libraries ja wohl schon vorhanden.

        Kommentar


        • #5
          Im Admin Interface anmleden
          http://www.loxone.com/dede/service/d...interface.html
          und umstellen zwischen alter/neuer Visu,

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: admin.png
Ansichten: 721
Größe: 212,1 KB
ID: 11042

          Kommentar


          • BSiege
            BSiege kommentierte
            Kommentar bearbeiten
            Ok, tatsächlich! Vielen Dank! Habe das nicht mitbekommen.

        • #6
          Puh... endlich wieder brauchbar! Bei mir war noch eine kleine Korrektur nötig: Die Anführungszeichen von "ws://" müssen auch weg. Dank syntaxcheck von vim.
          Ich habe übrigens ein NameVirtualHost bevorzugt, da kann ich auch auf die Pfaderweiterung auf /miniserver/ verzichten. Praktisch alle Browser kommen ja mittlerweile auch mit SNI zurecht.

          In meinem Fall reicht also folgende modifikation aus: replace "ws://" mit ("https:"==document.location.protocol ? "wss" : "ws") + "://"

          Code:
          <Proxy *>
          Options FollowSymLinks
          Require all granted
          </Proxy>
          
          ProxyPass       /login.js  !
          ProxyPass       /internal.min.js  !
          
          ProxyPass       /ws     ws://10.11.11.123/ws/
          ProxyPass       /       http://10.11.11.123/
          ProxyPassReverse /      http://10.11.11.123/


          Kommentar


          • #7
            Zitat von BSiege Beitrag anzeigen
            Die Anführungszeichen von "ws://" müssen auch weg.
            Super, habe ich oben korrigiert. Schön wäre, wenn wir auch für die neue Visu eine Lösung finden würden. Macht aber vermutlich Sinn erst einmal zu warten, bis Loxone da fertig ist...
            Bitte stellt Eure Anfragen nicht per PN, ich bevorzuge das Fragen/Antworten im Forum, damit alle etwas davon haben. Vorher lesen: https://www.loxforum.com/forum/proje...en-bitte-lesen

            LoxBerry: https://www.loxwiki.eu/display/LOXBERRY/LoxBerry

            Kommentar


            • #8
              Ich habe mal bei Loxone angefragt, ob man nicht von Haus aus den Support verbessern könnte. Weil ein ständiges ersetzen der Dateien (als Beta Nutzer) ist dann doch etwas unpraktikabel, insbesondere wenn es Auto-Updates gibt.
              Hat das auch schon jemand anderes versucht? Eigentlich müsste es ja u.a. schon helfen, wenn keine absoluten URLs verwendet werden. Oder aber der Javascript-Code muss erkennen, ob HTTP oder HTTPS zu verwenden ist. Bei WebSocket müssten sie dann zwingend solch eine Erkennung einbauen.

              Kommentar


              • #9
                Das Statement von Loxone ist, das man VPN benutzen soll. HTTPS wird nicht implementiert da es die Performance vom Miniserver runterzieht bzw. diese nicht ausreichen könnte. Bleibt also monetan nur die Lösung mit Reverseproxy.
                Loxone: Miniserver, 1Wire
                KNX: MDT JAL, AKK, AKD, BE

                Kommentar


                • #10
                  Meinte eher, dass Loxone den Support für Reverse Proxy verbessert (was ich eben angefragt hatte, nicht SSL Support im Miniserver), also ob das schon jemand angefragt hat. Ist ja nicht die optimale Lösung, Files von Loxone manuell anzupassen und selbst zu hosten

                  Kommentar


                  • darkrain
                    darkrain kommentierte
                    Kommentar bearbeiten
                    ok verstanden, ja das wäre ein feiner Zug, wenn da was käme.

                • #11
                  Zitat von darkrain Beitrag anzeigen
                  HTTPS wird nicht implementiert da es die Performance vom Miniserver runterzieht bzw. diese nicht ausreichen könnte.
                  Das muss man wohl so gelten lassen. Für den Miniserver.
                  Der "Miniserver GO" kam Ende 2014 heraus. Dass der zuwenig unter der Haube hat um SSL anbieten zu können, sagt für mich sehr viel über LOXONE aus. Ein entsprechender A20 Prozessor mit einem GB Speicher hätten den Herstellungspreis keine 10€ hoch gedrückt. Die Softwareseite darf man gar nicht rechnen, welche Entwicklungsumgebung unterstützt im 2016 kein TLS?
                  Zuletzt geändert von BSiege; 31.Mai.2016, 22:21. Grund: Typo

                  Kommentar


                  • maxw
                    maxw kommentierte
                    Kommentar bearbeiten
                    Der Miniserver ist kein klassischer Server den du im Internet bereitstellen sollst. Also gibt es keinen Bedarf für HTTPS. Willst du trotzdem aus dem Internet zugreifen, dann verwende VPN. Damit ist dein Miniserver vor z.b. DOS Angriffen aus dem Internet geschützt, was er mit HTTPS nicht ist.

                  • BSiege
                    BSiege kommentierte
                    Kommentar bearbeiten
                    Lieber maxw Es wäre nett und hilfreich wenn man sich zumindest in den Thread einlesen würde.

                • #12
                  Äh ja, Miniserver per HTTPS erreichbar machen, darum geht es doch, oder? Schlechte Idee. Punkt. Weil in deinem Heimnetzwerk wirst du das nicht brauchen. Und aus dem Internet ist es eine schlechte Idee. Punkt.

                  Kommentar


                  • #13
                    Normalerweise würde man SSL und damit auch entsprechend die Client Zertifikate direkt im Proxy terminieren bzw. checken.
                    D.h. das was dann im Internet steht und damit per DOS Angriffe erreichbar ist, ist nur der Proxy Server. Ohne Client Zertifikat ist kein Zugriff auf den Miniserver möglich.
                    Zwar geht es hier noch nicht um die Client Zertifikate, aber das wäre für mich die logische Erweiterung, wenn man SSL zum Laufen bekommt.

                    btw. ich würde erwarten, dass der VPN Server auch nicht automatisch gegen eine DDoS Attacke geschützt ist. Im Falle der FritzBox oder eines anderen HomeRouters wäre dann dadurch auch der NTP und der Netzwerk-Router für den Miniserver tot. Das ist allgemein auch kein gute Grundlage für einen reibungslosen Betrieb.
                    Zuletzt geändert von Gerrit; 01.Jun.2016, 00:02.

                    Kommentar


                    • #14
                      Moin,

                      VPN oder HTTPS wurde ja schon mehrmals diskutiert, dazu gibt es mittlerweile auch mehrere Wiki-Einträge. Es dürfte klar sein, dass HTTPS alleine keinen ausreichenden Schutz bietet. Ich kann auch verstehen, dass Loxone SSL nicht in den Miniserver implementiert (wobei sie es für Mail ja gemacht haben). Der Miniserver ist nunmal eine SPS und kein Server im eigentlichen Sinne.

                      ABER: Es wäre ein Einfaches für Loxone die Javascripte so anzupassen, das keine absoluten URLs mehr verwendet werden und man damit einen HTTPS-Proxy verwenden könnte.
                      Bitte stellt Eure Anfragen nicht per PN, ich bevorzuge das Fragen/Antworten im Forum, damit alle etwas davon haben. Vorher lesen: https://www.loxforum.com/forum/proje...en-bitte-lesen

                      LoxBerry: https://www.loxwiki.eu/display/LOXBERRY/LoxBerry

                      Kommentar


                      • maxw
                        maxw kommentierte
                        Kommentar bearbeiten
                        Woher kommt immer die Aussage SSL würde für E-Mail unterstützt?

                        Hier http://www.loxone.com/dede/service/d...e-monitor.html steht ganz klar:

                        PROBLEM MIT MAILVERSAND

                        Möglicherweise verwendet der Mailserver SSL (wird vom Miniserver nicht unterstützt), es wurde ein falscher Mail Server angegeben, oder die Userdaten sind ungültig.

                      • AUS
                        AUS kommentierte
                        Kommentar bearbeiten
                        hier, da hatte ich 'mal etwas zu Mailer+SSL geschrieben:
                        https://www.loxforum.com/forum/germa...8063#post38063
                        Leider geht der Link in's alte Forum nicht mehr, dummerweise hatte ich mir auch den alten Beta-Forumsbeitrag nicht kopiert...
                        Im Changelog steht aber auch noch etwas zu https/SSL:
                        z.B. Loxone Config 6.4.5.12: Support HTTPS at Virtual Outputs
                        Keine Ahnung, ob Loxone jetzt aus dem Mailer doch wieder etwas ausgebaut hat, ihn so ''einfach kaputt gelassen'' hat oder/und auch die Doku 'mal wieder schlampig ist.
                        Wer und wie soll das auch revisionssicher nachvollziehen... :-(
                        Zuletzt geändert von AUS; 01.Jun.2016, 11:47. Grund: Typos...

                    • #15
                      Ich war der Meinung, dass das mal in irgendeiner Version beim Mailer als experimentell gekennzeichnet war. Kriege ich aber auch nicht mehr zusammen, da ich den Mailer nie benutzt habe.
                      Bitte stellt Eure Anfragen nicht per PN, ich bevorzuge das Fragen/Antworten im Forum, damit alle etwas davon haben. Vorher lesen: https://www.loxforum.com/forum/proje...en-bitte-lesen

                      LoxBerry: https://www.loxwiki.eu/display/LOXBERRY/LoxBerry

                      Kommentar

                      Lädt...
                      X