Websocket Rewrite von http (80) zu https (443) SSL umstellen

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Websocket Rewrite von http (80) zu https (443) SSL umstellen

Postby fpdragon » 17. December 2019 14:03

Hallo!
Ich habe ein funktionstüchtiges Setup mit folgender VirtualHost Konfiguration:

Code: Select all
<VirtualHost *:80>
    ServerName my.server.com

    RewriteEngine On

    # When Upgrade:websocket header is present, redirect to ws
    # Using NC flag (case-insensitive) as some browsers will pass Websocket
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule ^/(.*)    ws://localhost:8181/$1 [P,L]

    # All other requests go to http
    DocumentRoot "W:/www"
   
    <Directory "W:/www">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>


Mein Ziel ist es nun den Server auf https und Port 443 umzustellen.

Frage 1:
Gibt es in XAMPP irgendeinen Mechanismus mit dem man gleich automatisch Zertifikate ziehen und konfigurieren lassen kann? Früher hatte ich einen Windows Server 2016 mit IIS im Einsatz und musste umständlich mit einem alten letsencrypt tool alle 3 Monate neue Zertifikate ziehen.

Frage 2:
Wie muss der VirtualHost angepasst werden damit die eigentlichen Files (W:/www") und die Websocket Verbindung über SSL und Port 443 laufen ABER die lokale Weiterleitung auf meine websocket Application weiterhin ohne SSL auf Port 8181 läuft. Am alten IIS Server hatte ich ein URL Rewrite Modul im Einsatz das das machte.
Also so:
Browser <== wss:// (SSL port 443) ==> Apache Rewrite <== ws:// (non SSL port 8181) ==> My App

Ich habe schon ein wenig rumgespielt aber bin auf noch keinen grünen Zweig gekommen.

Wäre toll wenn jemand helfen könnte. Danke.
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro

Re: Websocket Rewrite von http (80) zu https (443) SSL umste

Postby Nobbie » 17. December 2019 15:45

Frage 1: Nicht dass ich wüßte. Was heißt denn "automatisch Zertifikat ziehen"? Xampp benötigt Zertifikate, Xampp ist kein Zertifikat Provider (wie letsencrypt beispielsweise).

Frage 2: Wieso nicht einfach

Code: Select all
RewriteRule ^/(.*)    wss://localhost:443/$1 [L]


oder (falls der Request ein Proxyrequest sein muss) via Zwischenserver:

Code: Select all
RewriteRule ^/(.*)    https://ssl.localhost:443/$1 [L]


und im (zu kreierenden) VirtualHost ssl.localhost:

Code: Select all
RewriteRule ^/(.*)    wss://localhost:443/$1 [P,L]


Die Frage wäre zudem, ob man nicht statt mit Rewrite auch einfach einen ReverseProxy bedienen kann:

Code: Select all
ProxyPass /   wss://localhost:443
ProxyPassReverse / wss://localhost:443
Nobbie
 
Posts: 13176
Joined: 09. March 2008 13:04

Re: Websocket Rewrite von http (80) zu https (443) SSL umste

Postby fpdragon » 17. December 2019 16:48

Nobbie wrote:Frage 1: Nicht dass ich wüßte. Was heißt denn "automatisch Zertifikat ziehen"? Xampp benötigt Zertifikate, Xampp ist kein Zertifikat Provider (wie letsencrypt beispielsweise).

Frage 2: Wieso nicht einfach

Code: Select all
RewriteRule ^/(.*)    wss://localhost:443/$1 [L]


oder (falls der Request ein Proxyrequest sein muss) via Zwischenserver:

Code: Select all
RewriteRule ^/(.*)    https://ssl.localhost:443/$1 [L]


und im (zu kreierenden) VirtualHost ssl.localhost:

Code: Select all
RewriteRule ^/(.*)    wss://localhost:443/$1 [P,L]


Die Frage wäre zudem, ob man nicht statt mit Rewrite auch einfach einen ReverseProxy bedienen kann:

Code: Select all
ProxyPass /   wss://localhost:443
ProxyPassReverse / wss://localhost:443


Zu Frage 1:
Ich dachte an ein Script oder Tool das vl automatisch Serverzertifikate bei einem der Provider wie letsencrypt zieht und dann entsprechend konfiguriert. Gibt es scheinbar aber nicht im XAMPP Paket wenn ich dich richtig verstanden habe.

Zu Frage 2:
Der Witz dahinter ist, dass meine Applikation noch kein SSL unterstützt. Rein Konzeptuell muss sie das auch nicht wenn der Webserver beim Rerouting die Websocket Daten entsprechen SSL Ver- bzw Entschlüsselt. Die unverschlüsselten Daten werden dann ja eh nur noch lokal am Server übertragen und das Internet wäre brav SSL Verschlüsselt.
So hat es zu mindest bisher auf meinem alten holprigen IIS Server funktioniert.

ProxyPass muss ich auch mal testen. Ka wo da genau jetzt der Unterschied ist zur RewriteRule. Ich bin überhaupt mehr am herumprobieren als am wissen und das möchte ich ändern und lernen. ;-)

Danke dir für die Antworten!
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro

Re: Websocket Rewrite von http (80) zu https (443) SSL umste

Postby fpdragon » 18. December 2019 09:58

Zu Frage 1:
Es gibt sehr wohl ein script das Zertifikate erstellt und relativ automatisch konfiguriert:
Code: Select all
C:\xampp\apache\makecert.bat

Dieses Script führt einem durch die einzelnen Schritte und kopiert das Resultat automatisch in
Code: Select all
C:\xampp\apache\conf\ssl.crt\server.crt
C:\xampp\apache\conf\ssl.key\server.key


Diese beiden Files müssen dann in der VirtualHost section konfiguriert werden als:
Code: Select all
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key

Und Port noch von 80 auf 443 ändern.

Und siehe da... Funktioniert!

Einziges Problem: Das generierte Zertifikat wird von den meisten Browsern nicht als Vertrauenswürdig eingestuft. Aber jetzt weiß ich wie man's in Apache einhängt und kann auch eventuell letsencrypt Zertifikate einhängen. Wir werden sehen.

Und zu Frage 2:
Das funktioniert eigentlich eh 1:1 mit den obigen Änderungen. Durch die Umstellung auf SSL und dem Rewrite auf einen ws:// Pfad scheint Apache automatisch den SSL Datenstrom auf einen nicht SSL Datenstrom umzusetzen (kodieren und dekodieren). Ich öffne einen wss:// Pfad im Browser in meinem js code und am Server in meinem App lausche ich als ws://. Und es haut so alles hin. :-)
Perfekt.

Muss ich also nur noch das generierte Zertifikat durch ein "Vertrauenswürdiges" ersetzen.
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro

Re: Websocket Rewrite von http (80) zu https (443) SSL umste

Postby Nobbie » 18. December 2019 10:28

fpdragon wrote:Muss ich also nur noch das generierte Zertifikat durch ein "Vertrauenswürdiges" ersetzen.


"Nur noch" ist witzig, genau deswegen ist makecrt unbrauchbar. Natürlich kann "man" selbst Zertifikate bauen, das ist nicht das Problem. Das Problem ist natürlich, dass nur Zertifikate von vertrauenswürdigen, offiziell registrierten Providern auch akzeptiert werden. Und da ist letsencrypt auch der einzige, der kein Geld dafür nimmt. Das makecrt nutzt Dir gar nichts.
Nobbie
 
Posts: 13176
Joined: 09. March 2008 13:04

Re: Websocket Rewrite von http (80) zu https (443) SSL umste

Postby fpdragon » 18. December 2019 12:19

Nobbie wrote:
fpdragon wrote:Muss ich also nur noch das generierte Zertifikat durch ein "Vertrauenswürdiges" ersetzen.


"Nur noch" ist witzig, genau deswegen ist makecrt unbrauchbar. Natürlich kann "man" selbst Zertifikate bauen, das ist nicht das Problem. Das Problem ist natürlich, dass nur Zertifikate von vertrauenswürdigen, offiziell registrierten Providern auch akzeptiert werden. Und da ist letsencrypt auch der einzige, der kein Geld dafür nimmt. Das makecrt nutzt Dir gar nichts.


Naja, die Konfiguration vom Apache ist damit wenigstens klargestellt und das war eigentlich das Neuland für mich.
Ein Test mit www.sslforfree.com war jetzt auch erfolgreich. Die liefern sichere Zertifikate. Jetzt muss ich das regelmäßige Aktualisieren der Zertifikate nur noch über ein Script automatisieren. Wird kein großes Thema mehr sein.
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro

Re: Websocket Rewrite von http (80) zu https (443) SSL umste

Postby Nobbie » 18. December 2019 15:38

fpdragon wrote:Naja, die Konfiguration vom Apache ist damit wenigstens klargestellt und das war eigentlich das Neuland für mich.


Das wissen wir ja nicht, ich bin natürlich davon ausgegangen, dass die Theorie bekannt ist.

fpdragon wrote:Wird kein großes Thema mehr sein.


Man wird sehen. Soweit ich sehe, muss man ein Formular für die Validierung ausfüllen. Wenn die dort mit vorgenerierten Tokens arbeiten, wird es schwieirg. Dann musst Du noch einen HTML Parser einbauen, um die richtigen Werte zu ermitteln.
Nobbie
 
Posts: 13176
Joined: 09. March 2008 13:04


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 131 guests