Patrick Jürgens » Magento » Magento Cluster hinter einem SSL Load Balancer

Magento Cluster hinter einem SSL Load Balancer

Magento ist bekanntlich ein sehr Ressourcen-hungriges System und bei großen Shops mit viel Traffic nur im Cluster, hinter einem Load Balancer, in Verbindung mit einer guten Caching-Strategie, performant. Als Load Balancer kommt hierbei oft ein SSL Accelerator zum Einsatz, wie z.B. BIG-IP von F5. Dieser Load Balancer übernimmt für die Webserver die SSL Ver- und Entschlüsselung. Wie in der Grafik zu erkennen ist, wird zwischen Load Balancer und Webserver-Cluster HTTP gesprochen:

Load Balancer / SSL Accelerator

Problem bei dieser Architektur ist aber das Sicherheitskonzept von Magento. Magento sollte im Live-Betrieb so konfiguriert sein, dass für den Checkout, das Login, die Registrierung und das Kundenkonto HTTPS erzwungen wird. (Eine kurze Einleitung, wie man SSL für Magento aktiviert gibt es hier.) Ruft man z.B. das Login über HTTP auf, liefert Magento einen Redirect auf HTTPS aus. Bei der Verwendung eines SSL Accelerators ergibt sich somit ein Problem:

Ein Kunde will sich anmelden und ruft das Login per HTTPS auf, der Load Balancer verarbeitet SSL und spricht HTTP mit Magento. Magento liefert einen Redirect auf HTTPS aus, woraufhin der Browser des Kunden wieder HTTPS nutzt und man ist in einer Weiterleitungsschleife gefangen:

HTTPS Endlosschleife

Abhilfe schafft hier ein Dreizeiler am Anfang der ‘index.php’ im Magento-Root-Verzeichnis:

Mit diesem Dreizeiler wird der HTTP Header ‘SSL’ abgefragt und bei erfolgreicher Prüfung eine SSL Verbindung für Magento simuliert. Anzumerken ist, dass der HTTP Header ‘SSL’ direkt vom Load Balancer gesetzt wird und daher von der verwendeten Hardware abhängt. In unserem Beispiel wurde der Load Balancer so konfiguriert, dass er bei jeder HTTPS-Verbindung einen Header mit dem Namen ‚SSL‘ an den Request anhängt. Durch dieses Verfahren lässt sich Magento prima hinter einem SSL Accelerator verwenden und Weiterleitungsschleifen werden verhindert. Aber Vorsicht: diese Anpassung stellt eine Core Modifikation dar und wird bei jedem Update überschrieben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.