Mo–Fr: 09:00–17:00 Sa–So: geschlossen
03578 310535 info@formality.de
FORMALITY Deutschland 01917 Kamenz
HSTS in cPanel meistern: Der komplette Guide für WHM und .htaccess
HSTS auf cPanel-Servern konfigurieren: Der komplette Guide (WHM & .htaccess)
Sicherheit ist kein Feature mehr, sondern eine Notwendigkeit. Wenn Sie einen cPanel-Server verwalten oder eine Website hosten, haben Sie sicher schon SSL-Zertifikate eingerichtet. Aber SSL allein reicht nicht immer aus. Um "Man-in-the-Middle"-Angriffe effektiv zu verhindern und Browser dazu zu zwingen, ausschließlich verschlüsselt zu kommunizieren, benötigen Sie HSTS (HTTP Strict Transport Security).
In diesem Beitrag zeige ich Ihnen, wie Sie HSTS auf einem cPanel/Apache-Server global (via WHM) oder lokal (via .htaccess) einrichten, wie Sie auf die begehrte Preload-Liste kommen und – ganz wichtig – wie Sie HSTS im Notfall wieder deaktivieren.
Was ist HSTS?
HSTS ist ein HTTP-Header, den Ihr Server an den Browser sendet. Er sagt im Grunde: "Merk dir für die nächste Zeit (z.B. 1 Jahr), dass du diese Website niemals über unverschlüsseltes HTTP aufrufst, sondern nur über HTTPS."
Das schließt Sicherheitslücken, die entstehen, wenn ein User http:// eintippt, bevor die Weiterleitung greift.
Methode 1: Global für alle Domains (Via WHM)
Ideal für Server-Administratoren, die HSTS serverweit durchsetzen wollen.
Da cPanel die httpd.conf bei Updates überschreibt, dürfen wir diese Datei nicht direkt bearbeiten. Wir nutzen den Include Editor.
- Loggen Sie sich in WHM als
rootein. - Gehen Sie zu Service Configuration » Apache Configuration » Include Editor.
- Wählen Sie unter Pre VirtualHost Include die Option All Versions.
- Fügen Sie folgenden Code ein:
<IfModule mod_headers.c>
# HSTS global aktivieren
# Der Header wird nur gesendet, wenn die Verbindung bereits HTTPS ist
# 'always set' garantiert das Senden auch bei Redirects
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" "expr=%{HTTPS} == 'on'"
</IfModule>Klicken Sie anschließend auf Update und bestätigen Sie den Neustart des Apache.
⚠️ Warnung: Der Parameter includeSubDomains erzwingt SSL für alle Unterdomains (auch mail.domain.com, cpanel.domain.com, etc.). Wenn Sie Kunden haben, deren Subdomains kein gültiges SSL besitzen, lassen Sie diesen Parameter und preload weg!
Methode 2: Individuell pro Domain (Via .htaccess)
Ideal für Shared-Hosting-Nutzer oder wenn HSTS nur für bestimmte Seiten gelten soll.
Fügen Sie diesen Code ganz oben in die .htaccess Datei im public_html Verzeichnis ein. Dieser Block kümmert sich sowohl um die Weiterleitung auf HTTPS als auch um den HSTS-Header.
<IfModule mod_rewrite.c>
RewriteEngine On
# Zwingende Weiterleitung von HTTP auf HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
<IfModule mod_headers.c>
# HSTS Header setzen (Starten Sie mit einer kurzen Zeit zum Testen!)
# Aktuell eingestellt auf: 1 Jahr (31536000 Sekunden)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" "expr=%{HTTPS} == 'on'"
</IfModule>Der Gold-Standard: HSTS Preloading
Vielleicht ist Ihnen im Code das Wort preload aufgefallen. Dies ist Voraussetzung, um Ihre Domain bei hstspreload.org einzureichen.
Was ist die Preload-Liste?
Dies ist eine Liste, die von Google gepflegt und von Chrome, Firefox, Safari und Edge fest in den Browser-Code integriert wird. Domains auf dieser Liste werden vom allerersten Besuch an nur per HTTPS geladen, noch bevor der Server überhaupt kontaktiert wurde. Es ist die höchste Sicherheitsstufe.
Voraussetzungen für die Aufnahme:
- Gültiges SSL-Zertifikat.
- HTTP zu HTTPS Weiterleitung auf der Root-Domain muss aktiv sein.
- Alle Subdomains (inkl. 'www') müssen über HTTPS erreichbar sein.
- Der Header muss folgende Felder enthalten:
max-agemuss mindestens 31536000 (1 Jahr) sein.includeSubDomainsmuss vorhanden sein.preloadmuss vorhanden sein.
Wenn Sie diese Kriterien erfüllen, können Sie Ihre Domain auf hstspreload.org eintragen.
Notfallplan: Wie deaktiviere ich HSTS wieder?
Das Deaktivieren von HSTS ist tückisch. Wenn Sie den Header einfach aus der Konfiguration löschen, speichern die Browser der Besucher die Einstellung trotzdem noch, bis die max-age Zeit (z.B. 1 Jahr) abgelaufen ist.
Um HSTS "zu töten", müssen Sie den Browsern aktiv mitteilen, dass sie es vergessen sollen.
Schritt 1: Header auf 0 setzen
Ändern Sie den Code in WHM oder der .htaccess zu folgendem (überschreiben Sie den alten Eintrag):
<IfModule mod_headers.c>
# max-age=0 zwingt den Browser, das HSTS-Flag sofort zu löschen
Header always set Strict-Transport-Security "max-age=0" "expr=%{HTTPS} == 'on'"
</IfModule>Lassen Sie diesen Code so lange aktiv, bis alle regelmäßigen Besucher einmal auf der Seite waren (z.B. 1-2 Wochen).
Schritt 2: Preload-Liste (falls genutzt)
Wenn Sie auf der Preload-Liste stehen, müssen Sie auf hstspreload.org/removal die Löschung beantragen. Achtung: Es kann Wochen oder Monate dauern, bis diese Änderung über Browser-Updates bei allen Nutzern ankommt. Überlegen Sie sich den Eintrag in die Preload-Liste also gut!
Zusammenfassung
HSTS ist ein mächtiges Werkzeug für Sicherheit und SEO (Google bewertet sichere Seiten positiv). Starten Sie jedoch vorsichtig: Beginnen Sie mit einem niedrigen max-age (z.B. 300 Sekunden), testen Sie ausführlich, und erhöhen Sie erst dann auf ein Jahr, wenn Sie sicher sind, dass Ihre SSL-Konfiguration stabil ist.