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

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4597

    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.11.2015, 18:05.
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

  • BSiege
    LoxBus Spammer
    • 04.10.2015
    • 248

    #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

    • Prof.Mobilux
      Supermoderator
      • 25.08.2015
      • 4597

      #3
      Du meinst das neue Webinterface? Das kann sein - ich bin noch auf der Classic Oberfläche! Die neue Visu habe ich nicht getestet.
      🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


      LoxBerry - Beyond the Limits

      Kommentar

      • BSiege
        LoxBus Spammer
        • 04.10.2015
        • 248

        #4
        Zitat von Prof.Mobilux
        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

        • Lenardo
          MS Profi
          • 25.08.2015
          • 597

          #5
          Im Admin Interface anmleden
          In diesem Tutorialvideo stellt wir Ihnen die Projektübersicht und Programmoberfläche in Loxone Config vor. Jetzt Video ansehen >

          und umstellen zwischen alter/neuer Visu,

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

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

          Kommentar


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

          #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/
          
          [FONT=arial][COLOR=#333333][SIZE=14px][/SIZE][/COLOR][/FONT]


          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4597

            #7
            Zitat von BSiege
            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...
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar

            • Gerrit
              MS Profi
              • 26.08.2015
              • 935

              #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

              • darkrain
                MS Profi
                • 25.08.2015
                • 545

                #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.

                Kommentar

                • Gerrit
                  MS Profi
                  • 26.08.2015
                  • 935

                  #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.
                • BSiege
                  LoxBus Spammer
                  • 04.10.2015
                  • 248

                  #11
                  Zitat von darkrain
                  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.05.2016, 21: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.
                • maxw
                  Lox Guru
                  • 26.08.2015
                  • 1351

                  #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

                  • Gerrit
                    MS Profi
                    • 26.08.2015
                    • 935

                    #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; 31.05.2016, 23:02.

                    Kommentar

                    • Prof.Mobilux
                      Supermoderator
                      • 25.08.2015
                      • 4597

                      #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.
                      🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                      LoxBerry - Beyond the Limits

                      Kommentar

                    • Prof.Mobilux
                      Supermoderator
                      • 25.08.2015
                      • 4597

                      #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.
                      🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                      LoxBerry - Beyond the Limits

                      Kommentar

                      Lädt...