New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contao und CloudFlare Flexible SSL #7542

Closed
squidi opened this Issue Dec 29, 2014 · 7 comments

Comments

Projects
None yet
4 participants
@squidi

squidi commented Dec 29, 2014

Bezugnehmend auf:

https://community.contao.org/de/showthread.php?54749-Contao-und-CloudFlare-Flexible-SSL&p=353150&viewfull=1#post353150

könnte dies eine Lösungsansatz sein.

Contao erkennt über den CloudFlare Reverse-Proxy die Variable $_SERVER['HTTPS'] nicht, mit der in der Environment.php für die https oder http generiert.

CloudFlare gibt dort aber $_SERVER['HTTP_X_FORWARDED_PROTO']

Setzt man nun in Zeile 317

return ($_SERVER['SSL_SESSION_ID'] || $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || $_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1);

funktioniert es auch über CloudFlare Flexible SSL

@leofeyer leofeyer added the defect label Jan 10, 2015

@leofeyer leofeyer added this to the 3.2.17 milestone Jan 10, 2015

@leofeyer

This comment has been minimized.

Member

leofeyer commented Jan 20, 2015

Ich würde es vorziehen, das nicht zu implementieren. Es handelt sich bei CloudFlare nicht um eine echte Ende-zu-Ende-Verschlüsselung, da nur der Traffic zwischen Client und CloudFlare verschlüsselt ist, die eigentliche Verbindung zum Server aber wieder über HTTP erfolgt. Insofern ist die Erkennung der Environment-Klasse korrekt.

Wer CloudFlare nutzt, kann das ganz einfach in der initconfig.php umbiegen:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO']) {
    $_SERVER['HTTPS'] = 1;
}

Ich sage bewusst "umbiegen", weil hier eine technische Voraussetzung vorgegaukelt wird, die in Wahrheit nicht besteht. Es handelt sich nämlich wie gesagt in keiner Weise um eine sichere Verbindung.

@leofeyer leofeyer closed this Jan 20, 2015

@leofeyer leofeyer removed the defect label Jan 20, 2015

@leofeyer leofeyer removed this from the 3.2.17 milestone Jan 20, 2015

@squidi

This comment has been minimized.

squidi commented Jan 21, 2015

Leo, da gebe ich Dir heute völlig Recht, soweit es sich um Flexible SSL handelt, allerdings verstehe ich das in den anderen Varianten Full SSL und Strict SSL anders, dort besteht sehr wohl eine Ende-zu-Ende-Verschlüsselung.

https://support.cloudflare.com/hc/en-us/articles/200170416-What-do-the-SSL-options-Off-Flexible-SSL-Full-SSL-Full-SSL-Strict-mean

Aber der Eintrag in der initconfig.php sollte es auch tun, wurde auch schon im Forum angedacht.

@leofeyer

This comment has been minimized.

Member

leofeyer commented Jan 21, 2015

Bei Full SSL und Strict SSL besteht das Problem nicht, weil hier eine echte SSL-Verbindung am Server ankommt :)

@squidi

This comment has been minimized.

squidi commented Jan 21, 2015

Hast Du das getestet ? Ich meine dort kommt auch $_SERVER['HTTP_X_FORWARDED_PROTO'] , bin mir aber nicht 100% sicher, ob dort dann nicht Pro und höher verwendet werden muss.

@leofeyer

This comment has been minimized.

Member

leofeyer commented Jan 21, 2015

Nein, ich habe keinen Pro-Account bei CloudFlare. Aber wenn deren Server eine HTTPS-Verbindung aufbaut ist das für den Zielserver ja eine ganz normale HTTPS-Verbindung.

@dive13

This comment has been minimized.

dive13 commented May 29, 2017

Woran kann das liegen, dass nicht einmal der oben erwähnte Eintrag in der initconfig.php hilft? Bekomme nach wie vor kein https in die base URL. Contao 3.5.27 auf uberspace + Cloudflare Flexible SSL.

@Fruchuxs

This comment has been minimized.

Fruchuxs commented Jan 28, 2018

Die Prüfung auf "On" (upper-case o) scheint zu fehlen, zumindest war das ein Problem bei einer von mir betrauten Contao-Installation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment