Reverse Proxy mit Lets Encrypt funktioniert nicht

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von stevie1401 »

Tja, das funktioniert leider nicht.
leider ist mir auch nicht klar über welchen Port ich nun auf den Server gehen soll. 80? 443 oder 1602?
Ich habe inzwischen diverse

Code: Alles auswählen

<Virtualhost *:443>
irgendwas
</VirtualHost>
getestet, denn im Netz findet man diverse Beispiele mit denen das angeblich mit Websockets gehen soll.
Funktionieren tun sie alle nicht.
Ist doch wohl nicht so einfach.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von NicTheQuick »

Du sollst immer über Port 443 gehen. 1602 hast du doch gar nicht nach außen durch Port Forwarding geöffnet, oder doch?

Siehst du denn in den Apache-Logs überhaupt irgendwelche Zugriffe?
Bild
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von stevie1401 »

Die Datei access.log sagt:
31.17.221.169 - - [07/Oct/2020:00:47:07 +0200] "GET / HTTP/1.1" 200 4035 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
In error.log steht:
[Wed Oct 07 00:00:07.966751 2020] [mpm_event:notice] [pid 3973:tid 140515534085184] AH00489: Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f configured -- resuming normal operations
[Wed Oct 07 00:00:07.966951 2020] [core:notice] [pid 3973:tid 140515534085184] AH00094: Command line: '/usr/sbin/apache2'
[Wed Oct 07 00:45:13.691625 2020] [mpm_event:notice] [pid 3973:tid 140515534085184] AH00491: caught SIGTERM, shutting down
[Wed Oct 07 00:45:13.776841 2020] [mpm_event:notice] [pid 4411:tid 140491252522048] AH00489: Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f configured -- resuming normal operations
[Wed Oct 07 00:45:13.776961 2020] [core:notice] [pid 4411:tid 140491252522048] AH00094: Command line: '/usr/sbin/apache2'
[Wed Oct 07 00:47:59.562326 2020] [mpm_event:notice] [pid 4411:tid 140491252522048] AH00491: caught SIGTERM, shutting down
[Wed Oct 07 06:36:55.247693 2020] [mpm_event:notice] [pid 877:tid 140493691477056] AH00489: Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f configured -- resuming normal operations
[Wed Oct 07 06:36:55.305958 2020] [core:notice] [pid 877:tid 140493691477056] AH00094: Command line: '/usr/sbin/apache2'
Leider sagen mir diese Dinges nichts.
Ich komme anscheinend auf den Proxy, aber es wird nichts weitergeleitet.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von stevie1401 »

Die Verschlüsselung an sich scheint zu funktionieren.
gebe ich
https://doko-lounge.selfhost.eu/
ein, erscheint die Startseite von Apache und die Seite ist mit einem Schloss versehen. Nur die Websockets werden nicht weitergeleitet.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von NicTheQuick »

Hast du mehrere Virtualhosts in /etc/apache2/sites-enabled aktiv? Da sollte natürlich nur der stehen, den du benutzen willst. Wenn da noch sowas steht wie 000-default.conf oder ähnliches, dann wird der nämlich benutzt. Darin wird nämlich <VirtualHost *:80> ohne einen ServerName definiert, d.h. dieser Virtualhost springt auf jede Domain an. Und da sein Dateiname mit 000 beginnt, ist er alphabetisch immer als erstes im Ordner und wird demnach als erstes genutzt. Das würde auch dafür sprechen, dass du die " Apache2 Ubuntu Default Page " siehst, die standardmäßig im Ordner /var/www/html liegt.
Schau also, dass in sites-enabled nur der VirtualHost steht, den du angelegt hast und sonst keiner. Außer du möchtest später noch andere Domains nutzen und einen Multidomain-Server aufsetzen. ;-)
Bild
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von stevie1401 »

ok, ich habe:
000-default.conf
000-default-le-ssl.conf
default-ssl.conf
doko-lounge.selfhost.eu.conf

Welche soll ich behalten und welche bearbeiten und welche löschen? Und woher weiss ich welche aktiv ist?
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von stevie1401 »

Ich habe jetzt alle conf-Dateien ausser die doko-lounge.selfhost.eu.conf umbenannt, in der Hoffnung, dass diese nicht geladen werden. Und siehe da, jetzt geht gar nichts mehr.
Schade, dass das so komplett von hinten durchs Knie ins Auge ist, sodass man als Nicht-Profi einfach nicht verstehen kann, was man machen muss.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von NicTheQuick »

Alle Konfigurationen in sites-enables werden beim Neustart von Apache geladen. Und in der Regel sind das nur symbolische Links auf die Dateien in sites-available. Mit "a2ensite blabla.conf" wird einfach nur ein symbolischer Link in sites-enabled erstellt und mit "a2dissit blabla.conf" wieder dieser wieder gelöscht.

Und ja, du kannst alle entfernen außer doko-lounge.selfhost.eu.conf

Was bedeutet, dass jetzt gar nichts mehr funktioniert? Wenn ich auf deine Seite gehe, sehe ich noch das selbe wie zuvor. Vermutlich bist du gerade daran am Arbeiten und hast wieder alles rückgängig gemacht? Ich müsste Fehlermeldungen sehen um zu wissen, was falsch läuft. Du kannst ja einfach mal in einem eigenen Terminalfenster alle Log-Dateien gleichzeitig überwachen:

Code: Alles auswählen

tail -f /var/log/apache2/*.log
Mit STRG+C kannst du es wieder stoppen. Und dann guckst du mal, was so geloggt wird, wenn du auf deine Domain zugreifst.
Bild
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von stevie1401 »

Ich dachte ich aktivire die Datei mit:
sudo a2ensite doko-lounge.selfhost.eu.conf

Und damit dachte ich auch, dass alle anderen *. conf Dateien ignoriert werden.

Das ist jetzt meine aktuelle doko-lounge.selfhost.eu.conf:

Code: Alles auswählen

<VirtualHost *:80>
   ServerName doko-lounge.selfhost.eu
   ServerAdmin mailadresse@example.com
   
   # Falls jemand www. benutzt, schneide es ab.
   RewriteEngine On
   RewriteCond %{HTTP_HOST} ^www\. [NC]
   RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
   RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [L,NE,R=301]
   
   <Location "/.well-known">
      Require all granted
   </Location>

   # Hier muss der Pfad hin, in den Let's Encrypt Dateien anlegen darf
   DocumentRoot /var/www/html

   # Leite alle Zugriffe direkt auf HTTPS um
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteCond %{REQUEST_URI} !^/.well-known/(.*)
   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
   
</VirtualHost>

<Virtualhost *:443>
   ServerName doko-lounge.selfhost.eu
   ServerAdmin mailadresse@example.com

   # Let's Encrypt Zertifikate laden
   SSLCertificateFile      /etc/letsencrypt/live/doko-lounge.selfhost.eu/cert.pem
   SSLCertificateKeyFile   /etc/letsencrypt/live/doko-lounge.selfhost.eu/privkey.pem
   SSLCertificateChainFile /etc/letsencrypt/live/doko-lounge.selfhost.eu/fullchain.pem
   
   # Konfiguriere die erlaubten SSL-Protokolle
   SSLEngine On
   SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
   SSLCipherSuite EECDH+AESGCM:EDH+AESGCM

   SSLHonorCipherOrder on
   SSLCompression off
   
   # Aktiviere HSTS und erlaube Frames nur vom selben Origin
   Header always set Strict-Transport-Security "max-age=31536000;"
   Header always set X-Frame-Options SAMEORIGIN
   Header always set X-Content-Type-Options nosniff

   # Das braucht man, damit die RemoteIP weitergegeben wird
   #RemoteIPHeader X-Forwarded-For




 ProxyPreserveHost On
   RewriteEngine On
   RewriteCond %{HTTP:Upgrade} =websocket [NC]
   RewriteRule ^/(.*)           ws://127.0.0.1:1502/$1 [P,L]
   RewriteCond %{HTTP:Upgrade} !=websocket [NC]
   RewriteRule ^/(.*)           http://127.0.0.1:1502/$1 [P,L]

   ProxyPassReverse / http://127.0.0.1:1502/






   # Das ist wichtig, damit der originale Servername an den Proxy weitergegeben wird
   #ProxyPreserveHost On
   #ProxyPass / http://127.0.0.1:1602/
   #ProxyPassReverse / http://127.0.0.1:1602/


</VirtualHost>

Damit wird eine nixt existierende Seite ordnungsgemäß verschlüsselt, es wird aber kein Websocket weitergeleitet.

Brauche ich eigentlich den VirtualHost auf Port 80?
Schließlich geht es ja um die verschlüsselte Adresse.


Soll es wirklich ws://127.0.0.1:1502/$1 [P,L] und nicht wss://127.0.0.1:1502/$1 [P,L] heissen?

Es funktioniert jedenfalls nicht.

Mit den Log-Meldungen kann ich leider nichts anfangen.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Reverse Proxy mit Lets Encrypt funktioniert nicht

Beitrag von NicTheQuick »

stevie1401 hat geschrieben:Ich dachte ich aktivire die Datei mit:
sudo a2ensite doko-lounge.selfhost.eu.conf
Tust du ja auch. Aber so ein Apache kann mehr als nur einen Domainnamen und einen VirtualHost versorgen. Die anderen Dateien mit dem "default...conf" sind nur standardmäßig aktiviert für schnelle statische Testzwecke. Die sollte man dann eben ausschalten
Damit wird eine nixt existierende Seite ordnungsgemäß verschlüsselt, es wird aber kein Websocket weitergeleitet.

Brauche ich eigentlich den VirtualHost auf Port 80?
Schließlich geht es ja um die verschlüsselte Adresse.
Den brauchst du nicht unbedingt. Das ist nur die erste Anlaufstelle jedes Browsers, wenn man eine Webseite ohne Protokoll in die Adressbar eingibt. Wenn du also auf http://example.com gehst, dann wird ja Port 80 benutzt. Der Apache reagiert dann darauf und sendet dem Browser die Antwort, dass er doch zu https://example.com weiterleiten soll. Mehr macht dieser VirtualHost auf Port 80 bei dir auch nicht.
Soll es wirklich ws://127.0.0.1:1502/$1 [P,L] und nicht wss://127.0.0.1:1502/$1 [P,L] heissen?
Ja, das ist korrekt so. Dein Webssocket-Server, den du in Purebasic geschrieben hast, lässt sich ja nur unverschlüsselt erreichen.
Es funktioniert jedenfalls nicht.

Mit den Log-Meldungen kann ich leider nichts anfangen.
Ferndiagnose ist auch echt blöd. Nur leider kann ich dir nicht helfen, wenn du mir keine Logs zeigst. Ich würde mich ja gerne direkt auf deinen Server verbinden und das für dich machen, aber das wird wahrscheinlich kompliziert und dann müsstest du mir ja auch besonders vertrauen.
Bild
Antworten