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.

Shopware · Schritt für Schritt

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.

Variante A — EventSubscriber (Empfohlen)
SecurityHeaderSubscriber.php Produktiv
// 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'
    );
}
Variante B — Trusted Proxies
config/packages/framework.yaml Reverse Proxy
# 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
Sales Channel Domain

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).

Terminal Verifizierung
# 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

PCI DSS 4.0Requirement 4.2.1 — TLS 1.2+ für alle Datenübertragungen. HSTS verhindert unverschlüsselte Verbindungen.
NIS2Art. 21(h) — Kryptographie und Verschlüsselung als technische Maßnahme
BSIAPP.3.1.A14 — HSTS für alle Webanwendungen die sensible Daten verarbeiten

Wie steht Ihre Domain bei HSTS?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.