Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Alles, was den Apache betrifft, kann hier besprochen werden.

Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby tkanne » 19. February 2009 09:52

Hallo,

ich habe einen Apache2 reverse Proxy installiert und mit der SSL Engine Konfiguriert. Nun habe ich das Problem wenn ich den Proxy mit https anspreche das er automatisch beim ersten Aufruf auf http umstellt.

Beispiel: Ich rufe den Proxyserver auf https://myproxyserver.com. Es kommt zum timeout und dann ist im Firefox ersichtlich, dass er auf http://myproxyserver.com gewechselt hat. Wenn ich dann wieder ein https draus mache funktioniert es.

Hier meine httpd.conf:

<VirtualHost myproxy:8443>
ServerName mydomainname.com
ProxyPreserveHost On
ProxyPass / http://mybackendsystem:50000/
ProxyPassReverse / http://mybackendsystem:50000/
ErrorLog logs/mybackendsystem.com-ssl_error_log
CustomLog logs/mybackendsystem.com-ssl_access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/mybackendsystem_com.crt
SSLCertificateKeyFile /etc/apache2/ssl/mybackendsystem.key
ErrorLog logs/myproxy.443.error.log
CustomLog logs/myproxy.443.custom.log common
<Proxy *>
Order deny,allow
#Deny from all
Allow from all
</Proxy>
</VirtualHost>

Die Verbindung zum Proxyserver soll Verschlüsselt sein. Die Kommunikation zwischen Proxy und Backendsystem ist unverschlüsselt. Dies sollte ja kein Problem darstellen. Hat jemand eine Idee wo das Problem liegt das er von HTTPS auf HTTP switched?

Vielen Dank für Eure Antworten.

LG
Tim
tkanne
 
Posts: 5
Joined: 19. February 2009 09:42

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby Wiedmann » 19. February 2009 09:56

Code: Select all
<VirtualHost myproxy:8443>
ServerName mydomainname.com

Du solltest dich schon entscheiden ob "myproxy" oder "mydomainname.com".

Beispiel: Ich rufe den Proxyserver auf https://myproxyserver.com.

Da der Proxy ja auf Port 8443 laufen soll, wäre der Aufruf dann auch "https://myproxyserver.com:8443/".
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby tkanne » 19. February 2009 11:13

bei VirtualHost habe ich die Lokale IP Adresse des Proxyservers eingetragen. Bei Servername habe ich dann den Domainennamen des Servers wie er im Internet bekannt ist eingetragen. Das ganze wird dann an der FW von 443 auf die Interne Adresse auf Port 8443 vie PAT geleitet. Sollte so sinnvoll sein wegen der Zertifikatsgültigkeit und sollte auch keinen Einfluss auf mein eigentliches Problem haben. Richtig?
tkanne
 
Posts: 5
Joined: 19. February 2009 09:42

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby Wiedmann » 19. February 2009 11:27

Mal Abgesehen vom Zertifikatsfehler... Was passiert denn bei "https://myproxy:8443/" bei einem lokalen Zugriff?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby tkanne » 19. February 2009 11:44

lokal wird aus https://myproxy:8443 http://myproxy:8443/b2b/b2b/init.do?language=de. das Backend System ist eine SAP J2EE Engine und hat als Startseite die Adresse b2b/b2b/init.do?language=de Sowohl intern als auch extern wechselt der proxy einfach auf http
tkanne
 
Posts: 5
Joined: 19. February 2009 09:42

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby Wiedmann » 19. February 2009 11:54

Macht er das auch, wenn du die 2 ProxyPass* auskommentierst?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby tkanne » 19. February 2009 14:31

Wenn die beiden Proxy Pass Regeln herausgenommen sind, findet logischerweise keine Proxyaktivität statt und die Anfrage wird lokal verarbeitet.

Der Ablauf ist folgendermaßen:

1. Aufruf https://www.domain.com im Browser
2. Forward der Firewall auf Proxyserver myproxy:8443
3. Apache nimmt die Anfrage entgegen und verarbeitet entsprechend dem Regelwerk (Weiterleitung an mybackend:50000 - http)
4. Backend antwortet dem Proxy unverschlüsselt

Hier passiert der Entscheidende Fehler: anstatt die Seite in die verschlüsselte Session zu packen, meldet der Apache dem Browser die unverschlüsselte http verbindung zurück. Der Browser bekommt dann entsprechend einen Timeout, da der http port nicht auf der Firewall freigeschaltet ist.
tkanne
 
Posts: 5
Joined: 19. February 2009 09:42

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby Wiedmann » 19. February 2009 15:28

Hier passiert der Entscheidende Fehler: anstatt die Seite in die verschlüsselte Session zu packen, meldet der Apache dem Browser die unverschlüsselte http verbindung zurück.

OT: Lustige Terminologie ;-)

Also der Apache schickt deinem Browser nur das, was er vom Backend bekommt.
- Da du beim Aufruf von "https://myproxy:8443/" ohne ProxyPass dort bleibst,
- Da du beim Aufruf von "https://myproxy:8443/" mit ProxyPass ~"direkt" auf (dem eh fehlerhaften) "http://myproxy:8443/b2b/b2b/init.do?language=de" landest, wird eben das Backend für diesen falschen Redirect verantwortlich sein.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby tkanne » 19. February 2009 18:14

Ich hatte bisher nur Kontakt mit dem Reverse Proxy Pound, bei dem zwar alles (in selber Infrastruktur) geklappt hat, aber teilweise Sessions verworfen wurden. Hier einmal die Konfig:

Code: Select all
#Höre auf IP und Port, antworte mit Zertikat
ListenHTTPS
        Address meinproxy
        Port    8443
        Cert    "/etc/pound/cert.pem"
        ## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
        xHTTP           0

# Hier wird die Proxyaktivität festgelegt
        Service
        URL     ".*/"
# Wenn URL = true dann...
                Redirect "/b2b/b2b/init.do?language=de"
                      BackEnd
                      Address meinbackend
                      Port    50000
     End
End


Der Proxy schaut hier also nur in den HTTP Header und schiebt alles weitere direkt an das Backend. Das Backend antwortet, die Antwort wird auf dem Proxy durch den Tunnel gejagt und damit hat sich die Geschichte. Wie müsste eine entsprechende Konfiguration auf dem Apache aussehen?

Danke
tkanne
 
Posts: 5
Joined: 19. February 2009 09:42

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby Wiedmann » 19. February 2009 19:40

Tja, beim Apache kann man nicht viel mehr machen als das was du schon hast...

Wen du Probleme mit den Sessions hattest, solltest du beim Apache (ist das ein 2.2er?) auch die entspr. Directiven für Cookies eintragen.

Jetzt stellt sich halt die Frage, wieso dein Backend so einen Redirect macht, bzw. welchen es genau macht. Mit einem LogLevel von "Debug" kann man das herausfinden. (BTW langt es auch einmal die Logs zu definieren).

Etwas unglücklich könnte auch die Benutzung von "ProxyPreserveHost" sein (und evtl. der Grund sein, dass dein Backend meint auf einen "richtigen" Servernamen redirekten zu müssen).

Einen Redirekt muss dein Backend ja machen, da du ja von "https://myproxy:8443/" erst auf "http://mybackendsystem:50000/" landest, und dieses dann einen Redirekt nach "http://mybackendsystem:50000/b2b/b2b/init.do?language=de" macht.

(Warum hierbei dann ein Redirekt nach "http://myproxy:8443/b2b/b2b/init.do?language=de" dabei herauskommt... keine Ahnung von hier.)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby tonabnehmer » 28. April 2009 12:38

Mit 'ProxyPreserveHost Off' könnte es funktionieren. Ich habe derzeit wohl das gleiche Problem, brauche aber 'ProxyPreserveHost On' u.a. für Outlook Web Access.
tonabnehmer
 
Posts: 10
Joined: 27. April 2009 23:11

Re: Apache2 reverse Proxy stellt von HTTPS auf HTTP um

Postby Valermos » 11. June 2010 19:35

Auch wenn es nun 1 1/2 Jahre her ist, aber ich habe gerade diesen Eintrag zufällig bei Goggle gefunden...

Wenn sich noch jemand für die Lösung interessiert:

RequestHeader set ClientProtocol https

Einfach in die jeweilige Konfig eintragen und es erfolgt kein Wechsel von https auf http mehr.
Hatte selber das Problem mit einem Apache2.2.1.4 als reverse Proxy mit SSL Terminierung und einem SAP Portal.
Valermos
 
Posts: 1
Joined: 11. June 2010 19:30


Return to Apache

Who is online

Users browsing this forum: No registered users and 2 guests