Aktuelle Zeit: 29.10.2020 03:41

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 05.10.2020 10:47 
Offline

Registriert: 19.10.2014 15:51
Ich habe einen Reverse Proxy Server eingerichtet und die Ports 80 und 430 auf den PC weitergeleitet, auf dem mein Purebasic-Websocket-Server läuft.
Ein Lets Encrypt Schlüssel ist erfolgreich erstellt.
Der Purebasic-Websocket-Server läuft allerdings auf Port 1602.Dieser Port wird auch auf den PC auf dem der PB-Webserver Server läuft umgeleitet.
Von "draussen" komme ich nur unverschlüsselt auf den Server.
Was mache ich falsch?
Habe ich noch etwas vergessen zu tun?

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 05.10.2020 10:54 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
430 ist falsch. Der HTTPS-Port ist 443. Um das Zertifikat zu erzeugen, brauchst du nur Port 80. Deswegen ist es dir vielleicht vorher nicht aufgefallen.
Testen kannst du dein Zertifikat später übrigens hier: https://www.ssllabs.com/ssltest/
Einfach die Domain eingeben und dann wird die Verbindung auf Herz und Nieren getestet.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 05.10.2020 11:16 
Offline

Registriert: 19.10.2014 15:51
Sorry, 430 war ein Tippfehler. Ich meinte natürlich Port 443.
Getestet habe ich auch. Alles ok. Nur komme ich von einer verschlüsselten Seite NICHT auf meinen Web-Socket Server.

muss ich das:
<VirtualHost *:80>
ServerName doko-lounge-selfhost.eu
ProxyPreserveHost On
DocumentRoot /var/www/html
ProxyPass /.well-known !
ProxyPass / http://192.168.2.32:80/
ProxyPassReverse / http://192.168.2.32:80/
</VirtualHost>

vielleicht in
<VirtualHost *:1602>
ServerName doko-lounge-selfhost.eu
ProxyPreserveHost On
DocumentRoot /var/www/html
ProxyPass /.well-known !
ProxyPass / http://192.168.2.32:1602/
ProxyPassReverse / http://192.168.2.32:1602/
</VirtualHost>

ändern oder hinzufügen da der Web-Server ja auf Port 1602 läuft?

Habe es gerade versucht. Funktioniert leider auch nicht.

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 05.10.2020 16:15 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Du brauchst einen VirtualHost für Port 80 und für Port 443.

Aber ich steig jetzt nicht mehr ganz durch bei dir.

Also du hast einen Router mit zwei Port forwarding Regeln. Die Ports 80 und 443 hast du weitergeleitet auf die Ports 80 und 443 deines PCs.
Dieser PC hat einen Apachen auf Port 80 und 443 laufen und dieser soll dann Proxy zu deiner PB-Anwendung spielen, die auf dem selben PC läuft?

Zunächst solltest du sichergehen, dass dein Apache überhaupt auf den Port 443 hört. Unter einem Ubuntu gibt es dafür diese Datei:
/etc/apache2/ports.conf
Code:
Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

An ihr erkennt man, dass der Apache nur auf Port 443 läuft, wenn das ssl-Module aktiv ist. Wenn man sich nicht sicher ist, muss man es aktivieren. z.B. so:
Code:
sudo a2enmod ssl

Dann solltest du z.B. folgende Datei anlegen:
/etc/apache2/sites-available/doko-lounge.selfhost.eu.conf (Du hattest hier einen Tippfehler. Ich habe - durch . ersetzt)
Code:
<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

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

Danach aktivierst du die Seite und startest den Apachen neu.
Code:
sudo a2ensite doko-lounge.selfhost.eu.conf
sudo systemctl restart apache2.service

Falls du das ganze unter Windows machst, musst du selbst herausfinden, wo diese Dateien alle liegen und ob die Pfade stimmen. Ich habe einfach mal geraten.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 05.10.2020 16:25 
Offline

Registriert: 19.10.2014 15:51
Ja Mensch, da guckt man sich 1000 Videos an, aber bei dir habe ich es endlich etwas verstanden, NicTheQuick.
Ich werde das morgen ausgiebig testen.
Ich habe den Apache auf Linux Mint 20 laufen.

Erst einmal vielen Dank!!

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 05.10.2020 16:54 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Ich habe mir für den ganzen Kram schon einige Makros angelegt, die mir das vereinfachen. Ich hab das gerade extra für dich nochmal etwas aufgedröselt und ein paar Kommentare reingeschrieben. Ich kann mir vor stellen, dass zwischendurch doch noch Fehler passen. Um die Apache-Konfiguration zu testen, schreib einfach das hier:
Code:
sudo apachectl configtest

Ist der Syntax OK, dann sollte ein Restart möglich sein. Solange du keine Module installierst, deinstallierst und ausschließlich nur VirtualHosts änderst, dann reicht auch ein "sudo systemctl reload apache2.service". Aber einen großen Unterschied wird das für dich wahrscheinlich nicht machen.
Falls nicht schon geschehen, musst du auch noch folgendes Modul aktivieren
Code:
sudo a2enmod proxy_http

Und wenn du noch mehr Fragen hast, frag einfach, aber schreib mir auch die genauen Fehlermeldungen hier, damit es einfacher für mich ist. In /var/log/apache/ findest du auch immer allerhand Logs.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 06.10.2020 08:13 
Offline

Registriert: 19.10.2014 15:51
Hm, ich hab alle so gemacht wie du es beschrieben hast.
Leider kommt folgende Fehlermeldung:
Zitat:
Syntax error on line 49 of /etc/apache2/sites-enabled/doko-lounge.selfhost.eu.conf:
Invalid command 'RemoteIPHeader', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.


Klammere ich RemoteIPHeader aus, kommt folgende Meldung:
Zitat:
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK


Leider kann ich nirgends einen Eintrag mit der IP 127.0.1.1 finden...

Ich habe noch eine Verständnisfrage.
Der Client versucht ja sich mit dem Server über Websockets auf Port 1602 zu verbinden.
Muss ich da keinen VirtualHost für Port 1602 erstellen?

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 06.10.2020 09:39 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
stevie1401 hat geschrieben:
Zitat:
Syntax error on line 49 of /etc/apache2/sites-enabled/doko-lounge.selfhost.eu.conf:
Invalid command 'RemoteIPHeader', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.

Die Zeile brauchst du nicht unbedingt. Du kannst sie entweder löschen, oder du aktivierst das Modul headers:
Code:
sudo a2enmod headers

stevie1401 hat geschrieben:
Klammere ich RemoteIPHeader aus, kommt folgende Meldung:
Zitat:
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Das ist nur eine Info, kein echter Fehler. Das kannst du ignorieren.
stevie1401 hat geschrieben:
Ich habe noch eine Verständnisfrage.
Der Client versucht ja sich mit dem Server über Websockets auf Port 1602 zu verbinden.
Muss ich da keinen VirtualHost für Port 1602 erstellen?

Der Client sollte natürlich auch für seine Websockets https über Port 433 nutzen. Der Port 1602 sollte nur auf deinem PC offen sein, und nicht öffentlich im Internet hängen. Auch die Websockets sollten über den vorhandenen VirtualHost laufen. Die werden dann ja automatisch geproxied zu Port 1602 am PC.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 06.10.2020 10:01 
Offline

Registriert: 19.10.2014 15:51
Hm, ok, dann scheint alles ok zu sein.
Aber wie erreiche ich nun per Websocket mein Programm?
Laut Kiffi in der Spiderbasic-Rubrik, muss ich nun nicht mehr mit

Code:
"ws://doko-lounge.selfhost.eu:1602"


sondern mit

Code:
"wss://doko-lounge.selfhost.eu:1602"

Meinen Server erreichen.
Klappt aber nicht.
Auch nicht

Code:
"wss://doko-lounge.selfhost.eu:80"

und

Code:
"wss://doko-lounge.selfhost.eu:443"

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Reverse Proxy mit Lets Encrypt funktioniert nicht
BeitragVerfasst: 06.10.2020 11:04 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Oh, interessant. Das Protokoll ws bzw. wss habe ich noch nie genutzt. Jetzt hast du meine Wissenslücke erwischt. :D
Aber auch dafür gibt es ein Modul im Apachen: https://httpd.apache.org/docs/2.4/mod/m ... unnel.html

Zunächst müsstest du also auch dieses Modul aktivieren:
Code:
sudo a2enmod proxy_wstunnel

Und jetzt muss ich raten. Und rate dir diesen Teil
Code:
   ProxyPreserveHost On
   ProxyPass / http://127.0.0.1:1602/
   ProxyPassReverse / http://127.0.0.1:1602/

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

   ProxyPassReverse / http://127.0.0.1:1602/

Das sollte je nach einkommendem Protokoll entweder auf http oder ws Proxy spielen. Das P (Proxy) in [P,L] bedeutet, dass hier nicht wirklich eine URL umgeschrieben wird, sondern das selbe gemacht wird wie normalerweise ProxyPass macht. Das L (Last) in [P,L] bedeutet, dass nach dem Ausführen dieser Regel nichts weiter getan werden soll.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye