HTTPS und HSTS
Diese Seite richtet sich an Administratorinnen und Administratoren sowie Hosting-Teams. Viele Regierungen erwarten, dass ihre öffentlichen Websites ausschließlich über HTTPS ausgeliefert werden. HSTS (HTTP Strict Transport Security) lässt Browser sich das merken und unverschlüsseltes HTTP zu diesem Host verweigern. In Exponential ist HSTS standardmäßig leer und muss vom Betreiber gesetzt werden, sobald die gesamte Website nur noch über HTTPS läuft (Sicherheitsstandards: bekannte Lücken).
Inhalt
Die Reihenfolge der Schritte
Aus HTTPS überall:
- Liefern Sie jeden Namen der Website über HTTPS aus: Velocity
[HTTPSSettings]oder dessen ACME-Unterstützung, Apachemod_ssl, nginxssl. - Leiten Sie unverschlüsseltes HTTP auf HTTPS um (Webserver), oder für einzelne Teilbäume mit
[SSLZoneSettings]. - Setzen Sie
[Session] CookieSecure=true. - Schalten Sie HSTS ein, zunächst kurz, und heben Sie den Wert an, sobald alles funktioniert.
- Halten Sie die Zertifikate erneuert und überwacht (
./console exp:velocity ssl show --json, FelddaysLeft, oder der Timer Ihres ACME-Clients).
HSTS-Einstellungen
| Engine | Einstellung | Ab Werk |
|---|---|---|
| Velocity | settings/velocity.ini [HTTPSSettings] HSTSMaxAge, HSTSIncludeSubDomains, HSTSPreload | HSTSMaxAge=300 |
| Apache oder nginx mit PHP-FPM | site.ini [HTTPHeaderSettings] SecurityHeaders[Strict-Transport-Security] | leer |
Für Apache oder nginx in settings/override/site.ini.append.php:
[HTTPHeaderSettings]
SecurityHeaders[Strict-Transport-Security]=max-age=300Der Kernel sendet den Header nur über HTTPS. Leeren Sie danach den INI-Cache und laden Sie PHP neu.
HSTS sicher anheben
Ein Browser merkt sich HSTS für den gesamten Zeitraum und verweigert unverschlüsseltes HTTP zu diesem Host, auch nachdem Sie den Wert gesenkt haben.
| Stufe | Wert | Weiter, wenn |
|---|---|---|
| 1 | max-age=300 (5 Minuten) | jede Seite und jede Ressource jedes Namens über HTTPS funktioniert |
| 2 | max-age=86400 (1 Tag) | eine Woche ohne Probleme |
| 3 | max-age=2592000 (30 Tage) | ein Monat ohne Probleme |
| 4 | max-age=31536000 (1 Jahr) | jeder Name dauerhaft über HTTPS ausgeliefert wird |
Fügen Sie includeSubDomains nur hinzu, wenn jede Subdomain der Domain ausschließlich über HTTPS erreichbar ist:
Auf einer Behördendomain können das auch Dienste anderer Teams sein. Preload-Listen lassen sich nur schwer wieder
verlassen; entscheiden Sie das mit der Stelle, der die Domain gehört.
Prüfen
curl -sI http://www.example.gov/ | head -3 # a redirect to https
curl -sI https://www.example.gov/ | grep -i strict-transport
curl -sI https://www.example.gov/user/login | grep -i set-cookie # Secure; HttpOnly; SameSite=LaxHinter einem Proxy, der TLS terminiert, muss der Kernel wissen, dass die Anfrage über HTTPS kam: Konfigurieren Sie
TrustedProxies[] (siehe „Proxys und vertrauenswürdige Header“), sonst meldet CookieSecure=true die Benutzer auf
jeder Seite ab.
Verwandte Seiten
- 13.9 Sicherheits-Header und HTTPS
- HTTPS und Zertifikate in Velocity
- Live gehen: Hosts und HTTPS
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.