Tribune

Home » Liferay Portal » Deutsch

Vista Combinata Vista Piatta Vista ad Albero
Discussioni [ Precedente | Successivo ]
toggle
Dennis Greiffenberg
SSL scheitert am Virtual Host!?
20 luglio 2011 8.47
Risposta

Dennis Greiffenberg

Punteggio: Regular Member

Messaggi: 222

Data di Iscrizione: 30 aprile 2007

Messaggi recenti

'n Abend zusammen,

ich habe ein sehr merkwürdiges Problem, zu dem ich gerne eure Meinung einholen möchte.
Folgende Aufgabenstellung: Nach dem Login soll das komplette Portal SSL-verschlüsselt sein.
Eigentlich kein großes Problem, sollte man denken; schließlich liefert Liferay genau dafür einen eigenen Konfigurationseintrag:
1#### SSL ####
2
3#
4# Set this to true to ensure users login with https.
5#
6company.security.auth.requires.https=true


Das funktioniert auch prinzipiell problemlos, allerdings nicht, wenn ich auf den in Liferay konfigurierten Virtual Host zugreife; in diesem Fall wird dieser Parameter offensichtlich ignoriert.

Ein Beispiel: Der in Liferay konfigurierte Virtual Host lautet "www.mycompany.com". Das Login-Portlet ist auf der Startseite platziert (nein, ich kann nicht über /c/login gehen...). Wenn ich mir den Quellcode der Seite ansehe, sehe ich als Action für den Button "http://www.mycompany.com/...". Wenn ich einen Eintrag in meiner lokalen hosts-Datei mache auf "ssl.mycompany.com" und auf die Seite zugreife ändert sich die Action auf "https://ssl.mycompany.com", also genau das, was ich haben möchte. Gleiches gilt beim Zugriff via IP, also muss es wohl was mit dem Virtual Host zu tun haben.

Bin für jeden Tipp dankbar...

Besten Dank,
Dennis

PS: LR 5.2 EE SP3, Tomcat 6.0.18 mit vorgeschaltetem Apache Webserver
Hiran Chaudhuri
RE: SSL scheitert am Virtual Host!?
23 luglio 2011 0.07
Risposta

Hiran Chaudhuri

Punteggio: Regular Member

Messaggi: 174

Data di Iscrizione: 1 settembre 2010

Messaggi recenti

Bei SSL verifiziert der Client das Zertifikat, mit dem sich der Server ausweist.
Wenn es nicht zum Namen passt, den der Client angefordert hat, bekommst der User mindestens eine Warnung.

Ich glaube, dass Liferay die Virtual Hosts so baut, wie Apache einen "name based virtual host" baut. Genau die haben Probleme bei SSL.
Im Fall von Apache muss es also ein virtual host sein, der exklusiv auf seinem Port lauscht. Vielleicht hast Du ein ähnliches Problem, nur eben in Tomcat oder was auch immer Du laufen lässt. Meiner Meinung hat das Flag für Liferay dazu zunächst wenig zu melden.

http://httpd.apache.org/docs/2.2/vhosts/name-based.html
oder noch besser
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts
Dennis Greiffenberg
RE: SSL scheitert am Virtual Host!?
25 luglio 2011 1.19
Risposta

Dennis Greiffenberg

Punteggio: Regular Member

Messaggi: 222

Data di Iscrizione: 30 aprile 2007

Messaggi recenti

Zunächst einmal vielen Dank für Deine Antwort!
Ich fürchte jedoch, ich habe nicht richtig verstanden emoticon
Bei SSL verifiziert der Client das Zertifikat, mit dem sich der Server ausweist.
Wenn es nicht zum Namen passt, den der Client angefordert hat, bekommst der User mindestens eine Warnung

Das ist an dieser Stelle gar nicht das Problem. Das Problem ist, dass beim Aufruf des in Liferay konfigurierten Virtual Hosts Liferay den Link gar nicht erst auf SSL basierend aufbaut.

Der Name im Zertifikat passt zum aufgerufenen Domain-Namen überein, aber das wäre wie gesagt erst der nächste Schritt.

Hat sonst keiner eine Idee dazu? SSL dürfte gerade unter den Portalen weit verbreitet sein, und wenn man das Login-Portlet nicht auf einer separaten Seite hat, so dass man im Apache eine entsprechende Redirect-Rule eintragen kann, müssten eigentlich schon etliche andere über das Problem gestolpert sein, oder?!

Besten Dank,
Dennis
Hiran Chaudhuri
RE: SSL scheitert am Virtual Host!?
26 luglio 2011 6.06
Risposta

Hiran Chaudhuri

Punteggio: Regular Member

Messaggi: 174

Data di Iscrizione: 1 settembre 2010

Messaggi recenti

Dennis Greiffenberg:
Das ist an dieser Stelle gar nicht das Problem. Das Problem ist, dass beim Aufruf des in Liferay konfigurierten Virtual Hosts Liferay den Link gar nicht erst auf SSL basierend aufbaut.

Du hast Recht. Waehrend ich recherchiert habe, ist mir das zwar aufgefallen, aber ich habe den Text nicht nochmal aktualisiert.
Hast Du denoch mal
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts
angesehen? Da wird beschrieben, warum virtual hosts und SSL problematisch sind.

Genauer: Die SSL Verschluesselung muss etabliert werden, nachdem TCP steht und bevor HTTP anfaengt. Zu diesem Zeitpunkt weiss der Server aber nicht, von welchem Virtualhost er das Zertifikat nehmen muesste, weil diese Information erst im HTTP Header uebertragen wird. Wenn sich das Problem so bei Apache httpd aeussert, dann sollte es doch genauso bei Tomcat sein.
Dennis Greiffenberg
RE: SSL scheitert am Virtual Host!?
26 luglio 2011 6.10
Risposta

Dennis Greiffenberg

Punteggio: Regular Member

Messaggi: 222

Data di Iscrizione: 30 aprile 2007

Messaggi recenti

Der in Apache konfigurierte vhost scheint mir nicht das Problem zu sein.
Alles was ich dort als vhost resp. "ServerName" konfiguriert habe "greift".

Die Logik um die es mir geht ist etwas Liferay-spezifisches ("wenn sich jemand einloggen will erzwinge eine Umleitung auf SSL"). Diese Umleitung funktioniert wie gesagt prima für alle FQDNs (lokal in der hosts-Datei) sowie für die IP des Servers nur eben nicht für den in Liferay konfigurierten VirtualHost.

Bislang ist das der einzige Zusammenhang den ich hier sehe. Das Problem existiert in LR5.2 EE SP4 ebenso und vermutlich auch in SP5 da ich diesbzgl. bei den Patches der Vorgängerversionen nichts finden konnte.

/Dennis
Olaf Kock
RE: SSL scheitert am Virtual Host!?
26 luglio 2011 8.56
Risposta

Olaf Kock

LIFERAY STAFF

Punteggio: Liferay Legend

Messaggi: 1959

Data di Iscrizione: 23 settembre 2008

Messaggi recenti

Das alte Problem mit https und virtual Hosts liegt hier nicht vor - das würde sich in Zertifikatsproblemen o.ä. äußern (Beispiel: https://olafkock.de - das Zertifikat dort gilt nur für www.olafkock.de (und ist außerdem noch selbstsigniert, aber das tut hier nichts zur Sache))

Ich habe noch nicht genug Zeit gefunden, das Problem mal zu debuggen - interessant könnte aber auch noch die Konfiguration von Apache und Tomcat sein: Wenn diese über mod_proxy via http läuft, erhält tomcat in der Regel nicht genug Informationen über die Verschlüsselung der Seite - ich rate immer zu mod_jk oder mod_proxy_jk, also die Kopplung der beiden Server über ajp
Hiran Chaudhuri
RE: SSL scheitert am Virtual Host!?
27 luglio 2011 0.21
Risposta

Hiran Chaudhuri

Punteggio: Regular Member

Messaggi: 174

Data di Iscrizione: 1 settembre 2010

Messaggi recenti

Dennis Greiffenberg:
Der in Apache konfigurierte vhost scheint mir nicht das Problem zu sein.
Alles was ich dort als vhost resp. "ServerName" konfiguriert habe "greift".

Ah, jetzt las ich auch Deinen Hinweis, dass Du Apache vorgeschaltet hast.

Dennis Greiffenberg:
Die Logik um die es mir geht ist etwas Liferay-spezifisches ("wenn sich jemand einloggen will erzwinge eine Umleitung auf SSL"). Diese Umleitung funktioniert wie gesagt prima für alle FQDNs (lokal in der hosts-Datei) sowie für die IP des Servers nur eben nicht für den in Liferay konfigurierten VirtualHost.

Du hast Recht: Die Forderung nach einer sicheren Verbindung muss aus der Applikation kommen, Tomcat muss dann den Request zum HTTP-Port umleiten.
Wenn keine solche Umleitung erfolgt, muss also irgendwas in Liferay gemacht werden.

Ich bin in das Problem gar nicht erst getappt, weil ich das Portal nur ueber SSL anbiete.
Olaf Kock
RE: SSL scheitert am Virtual Host!?
27 luglio 2011 2.00
Risposta

Olaf Kock

LIFERAY STAFF

Punteggio: Liferay Legend

Messaggi: 1959

Data di Iscrizione: 23 settembre 2008

Messaggi recenti

Hiran Chaudhuri:
Ich bin in das Problem gar nicht erst getappt, weil ich das Portal nur ueber SSL anbiete.


Gute Strategie. Und mein Default-Rat: Mixed-Mode Betrieb in http/https bedeutet meist, dass irgendeine Lücke irgendwo offen bleibt - Session Cookies müssen https-only übertragen werden, alle Links die bestehen müssen auf https führen, etc.

Davon ausgehend: Quick Workaround für das bestehende Problem: Redirect von allen http-Verbindungen auf https - ich denke, dass die URL stimmt, wenn das Formular bereits über https ausgeliefert wurde, oder? Das ändert nichts daran, dass das beobachtete Verhalten besser gefixt werden sollte, meine persönliche Einstellung ist aber, dass mixed-mode meist nicht zu mehr tatsächlicher Sicherheit führt - lediglich zu mehr gefühlter Sicherheit.
Dennis Greiffenberg
RE: SSL scheitert am Virtual Host!?
27 luglio 2011 2.33
Risposta

Dennis Greiffenberg

Punteggio: Regular Member

Messaggi: 222

Data di Iscrizione: 30 aprile 2007

Messaggi recenti

Hi Olaf,

Gute Strategie. Und mein Default-Rat: Mixed-Mode Betrieb in http/https bedeutet meist, dass irgendeine Lücke irgendwo offen bleibt

Da ein Großteil der Portalbenutzer nicht eingeloggt ist wollen wir es erstmal wie geplant versuchen. Ab dem Login soll ja die komplette Session auf SSL bleiben, also nicht so, wie es auf liferay.com selber gemacht wird.

Da die Links alle relativ sind und von Liferay selber zusammengebastelt werden sollte das Thema http:// und https:// kein wirkliches Thema sein und scheint auch tadellos zu funktionieren. Der Übeltäter scheint hier wirklich nur der Virtual Host zu sein.

Viele Grüße,
Dennis
Olaf Kock
RE: SSL scheitert am Virtual Host!?
2 agosto 2011 6.14
Risposta

Olaf Kock

LIFERAY STAFF

Punteggio: Liferay Legend

Messaggi: 1959

Data di Iscrizione: 23 settembre 2008

Messaggi recenti

Dennis Greiffenberg:
Das Login-Portlet ist auf der Startseite platziert (nein, ich kann nicht über /c/login gehen...)

Gerade sehe ich hier noch etwas:
Gibt es einen Grund dafür, über das LoginPortlet gehen zu müssen? Das Problem, was ich hier sehe ist die Vortäuschung falscher Sicherheit:
Wenn das LoginPortlet via http ausgeliefert wird, gibt es keine Garantie, dass es authentisch ist: Ein Angreifer kann beliebigen Code einschmuggeln: Javascript, Absenden des Formulars an ein anderes als das beabsichtigte https-Ziel etc.

Wenn ich das Problem richtig verstehe, sollte mit dieser Maßnahme (als technisch sehr ratsamer workaround) das ursprüngliche Problem keine Auswirkung mehr haben. Ich habe an anderer Stelle ja bereits über die Probleme beim Mischbetrieb von http und https geschrieben. Das hier ist eines der "Posterchilds" die sehr gern übersehen werden und unnötigerweise eine echte Sicherheitslücke öffnen.
Dennis Greiffenberg
RE: SSL scheitert am Virtual Host!?
2 agosto 2011 6.55
Risposta

Dennis Greiffenberg

Punteggio: Regular Member

Messaggi: 222

Data di Iscrizione: 30 aprile 2007

Messaggi recenti

Hi Olaf,

Gibt es einen Grund dafür, über das LoginPortlet gehen zu müssen? Das Problem, was ich hier sehe ist die Vortäuschung falscher Sicherheit:
Wenn das LoginPortlet via http ausgeliefert wird, gibt es keine Garantie, dass es authentisch ist: Ein Angreifer kann beliebigen Code einschmuggeln: Javascript, Absenden des Formulars an ein anderes als das beabsichtigte https-Ziel etc.

Die ganze Seite ist prinzipiell öffentlich per HTTP erreichbar. Bei einem Login, das Login-Portlet ist von diversen Seiten erreichbar und nicht etwas auf einer eigenen Seite, soll die Action des Login-Portlets auf https umleiten. Ab da soll dann die komplette Session HTTPS bleiben. In sofern sehe ich hier keine Probleme durch mixed mode etc.

Wie gesagt: Das gewünschte Verhalten funktioniert tadellos, nur halt nicht für den in Liferay konfigurierten Virtual Host und genau das bereitet gerade massive Probleme.

/Dennis
Olaf Kock
RE: SSL scheitert am Virtual Host!?
2 agosto 2011 8.39
Risposta

Olaf Kock

LIFERAY STAFF

Punteggio: Liferay Legend

Messaggi: 1959

Data di Iscrizione: 23 settembre 2008

Messaggi recenti

Ich wollte darauf hinweisen, dass ein über http ausgeliefertes Loginformular - auch, wenn das Ziel der Login-Aktion über https eingestellt ist - eine Sicherheitslücke darstellt. Für einen Angreifer ("Man in the middle") ist es ein einfaches, das Loginformular zu manipulieren (da es ja unverschlüsselt übertragen wird) oder ggf. weiteren Code - javascript - einzuschleusen. https soll gegen "man in the middle" Angriffe schützen, damit es das tun kann, muss das Loginformular und die gesamte Seite über https ausgeliefert werden.

Von daher ist mein Rat, statt des Einbaus des Loginformulars auf diversen Seiten lediglich einen Link auf eine https-Seite zu hinterlegen, die dann ein Loginformular enthält. Nur so kann https die Sicherheit bieten, für die es eingesetzt wird.

Meine Hoffnung war, dass durch diese Maßnahme sowohl das System sicherer wird, als auch das beschriebene Problem umgangen wird.
Dennis Greiffenberg
RE: SSL scheitert am Virtual Host!?
3 agosto 2011 0.04
Risposta

Dennis Greiffenberg

Punteggio: Regular Member

Messaggi: 222

Data di Iscrizione: 30 aprile 2007

Messaggi recenti

Okay, verstehe nun was Du meinst. Bin allerdings nichts sicher, dass das momentan eine Option ist. Das werde ich klären.
Das Problem scheint nur in der EE aufzutreten, zumindest konnte ich das in der CE nicht reproduzieren. Da wird nach Setzen der folgenden Parameter einfach gar nicht erst auf https umgeleitet, also nie:

 1#### SSL ####
 2
 3#
 4# Set this to true to ensure users login with https.
 5#
 6#company.security.auth.requires.https=false
 7company.security.auth.requires.https=true
 8
 9#
10# Set the HTTP and HTTPs ports when running the portal in a J2EE server that
11# is sitting behind another web server like Apache. Set the values to -1 if
12# the portal is not running behind another web server like Apache.
13#
14web.server.http.port=80
15web.server.https.port=443
Olaf Kock
RE: SSL scheitert am Virtual Host!?
3 agosto 2011 1.41
Risposta

Olaf Kock

LIFERAY STAFF

Punteggio: Liferay Legend

Messaggi: 1959

Data di Iscrizione: 23 settembre 2008

Messaggi recenti

Ich habe das Problem mal versucht mit 5.2 EE SP5 nachzustellen - ohne Erfolg. Zumindest mit diesem Servicepack funktioniert's wie gewünscht, allerdings auch mit dem oben beschriebenen falschen Sicherheitsgefühl.