HSTS für Shopware 6 konfigurieren
Schritt-für-Schritt: HTTP Strict Transport Security in Shopware einrichten — EventSubscriber, Sales Channel HTTPS-Domain und Preload-Registrierung.
HSTS in Shopware 6
HTTP Strict Transport Security (HSTS) weist Browser an, ausschließlich verschlüsselte HTTPS-Verbindungen zu verwenden. Für Shopware-Shops mit Zahlungsverkehr ist HSTS eine Grundvoraussetzung. HSTS ist mit 15 von 166 Punkten ein wichtiger Faktor im Wolf-Agents Web Security Check.
In Shopware 6 setzen Sie HSTS über einen EventSubscriber, da es keine native shopware.yaml-Option für diesen Header gibt. Zusätzlich muss der Sales Channel korrekt mit einer HTTPS-Domain konfiguriert sein. Bei Reverse-Proxy-Setups (z.B. hinter einem Load Balancer) sind die trusted_proxies in framework.yaml entscheidend.
Implementierung: EventSubscriber und Framework-Config
Variante A (empfohlen): HSTS-Header im EventSubscriber setzen. Variante B: Trusted-Proxies-Konfiguration in framework.yaml für korrekte HTTPS-Erkennung hinter einem Reverse Proxy.
// SecurityHeaderSubscriber.php — HSTS
public function onResponse(ResponseEvent $event): void
{
if (!$event->isMainRequest()) {
return;
}
$response = $event->getResponse();
// HSTS — 1 Jahr, alle Subdomains, Preload-fähig
$response->headers->set(
'Strict-Transport-Security',
'max-age=31536000; includeSubDomains; preload'
);
} # config/packages/framework.yaml — HTTPS erzwingen
framework:
# Trusted Proxies für Load Balancer / Reverse Proxy
trusted_proxies: '%env(TRUSTED_PROXIES)%'
trusted_headers:
- x-forwarded-for
- x-forwarded-proto Stellen Sie sicher, dass Ihr Sales Channel in der Shopware-Administration unter Einstellungen eine HTTPS-Domain verwendet. Ohne HTTPS-Domain generiert Shopware HTTP-Links und HSTS wird wirkungslos.
Verifizierung
Nach dem Cache-Leeren prüfen Sie den HSTS-Header mit curl. Starten Sie mit einem kurzen max-age=300 und erhöhen Sie schrittweise auf 31536000 (1 Jahr).
# Cache leeren
bin/console cache:clear
# HSTS-Header prüfen
curl -sI https://ihr-shop.de | grep -i strict-transport-security
# Erwartete Ausgabe:
# Strict-Transport-Security: max-age=31536000; includeSubDomains; preload Häufige Fehler
Sales Channel ohne HTTPS-Domain
Wenn der Sales Channel mit http:// konfiguriert ist, erzeugt Shopware unverschlüsselte Links. Browser ignorieren HSTS-Header über HTTP. Ändern Sie die Domain in der Administration auf https://.
Trusted Proxies nicht konfiguriert
Hinter einem Load Balancer oder Reverse Proxy erkennt Symfony HTTPS nicht korrekt. Konfigurieren Sie trusted_proxies in framework.yaml mit der IP des Proxys oder REMOTE_ADDR.
Shopware HTTP Cache liefert gecachte Header
Der Shopware HTTP Cache kann veraltete Header ausliefern. Nach Änderungen am EventSubscriber immer bin/console cache:clear und bin/console http:cache:clear ausführen.
Compliance-Anforderungen
Wie steht Ihre Domain bei HSTS?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.