Shopware Cluster | Mixed Content Problem

Wer schon mal mit einem Loadbalancer oder Varnish + Shopware 5.4+ gearbeitet hat kennt sicher das Problem. Mixed Content. Das ganze ist allerdings halb so wild und schnell gelöst.

Mixed Content

„Wenn die HTTPS-Seite Inhalte enthält, die über reguläres HTTP im Klartext abgerufen werden, ist die Verbindung nur teilweise verschlüsselt: Der unverschlüsselte Inhalt ist zugänglich für Sniffer und kann durch Man-in-the-Middle-Angriffe verändert werden, weshalb die Verbindung nicht mehr geschützt ist. Eine Website, die dieses Verhalten aufweist, wird als Mixed Content-Seite bezeichnet.“ (Quelle: MDN)

Sprich Ihr habt irgendwo einen Link oder Resource mit http statt https. Das muss auf den ersten Blick nicht offensichtlich sein und kann schon so aussehen:

FEHLER
<link rel="stylesheet" href="themes/Frontend/Master/frontend/_public/src/font/css/external.css">

OK
<link rel="stylesheet" href="/themes/Frontend/Master/frontend/_public/src/font/css/external.css">

Grundsätzlich solltet Ihr natürlich immer mit einem leading Slash eure URL setzen.

Problem vorhanden?

Seid Ihr vom Problem betroffen oder nur ein hart codierter Link von irgendeinem Fremdplugin? Geht dafür einfach ins Backend und öffnet die Systeminfo:

Systeminfo

Dort findet Ihr unter PhpInfo die nötige Info. Hier ist nämlich $_SERVER[‚HTTPS‘] auf „no value“ gesetzt. Für uns ist hier $_SERVER[‚HTTP_X_FORWARDED_PROTOCOL‘] oder $_SERVER[‚HTTP_X_FORWARDED_PROTO‘] interessant (das kommt auf euren Webserver an).

phpinfo() HTTPS ohne trustedproxies

Lösung

Ist $_SERVER[‚HTTPS‘] leer müsst Ihr euren LB oder Varnish als trustedProxy in der config.php eintragen:

'trustedproxies' => [
        '78.0.0.1',
        '78.0.0.2',
    ],

In meinem Fall brauchte ich hier nur eine IP (vom Varnish Loadbalancer) mitzugeben. Danach liefen alle Requests wieder normal, auch wurde hier $_SERVER[‚HTTPS‘] und $_SERVER[‚HTTP_X_FORWARDED_PROTO‘] direkt gesetzt.

phpinfo() HTTPS mit trustedproxies in der config.php

Damit funktionieren externe Plugins die auf $_SERVER[‚HTTPS‘] prüfen wieder und Ihr könnt euch anderen Problemen widmen 😉

PS: Selbst wenn Ihr keine offensichtlichen Probleme habt, solltet Ihr bei einem LB oder Cache Server die trustedproxies eintragen, sonst werden Nutzerdaten nicht korrekt abgespeichert.

Schreibe einen Kommentar

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