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. Die Reihenfolge der Weiterleitungsregeln ist dabei entscheidend: Zuerst wird HTTP auf HTTPS umgeleitet, dann erst erfolgt die Weiterleitung von non-www auf www – da der HSTS-Header ausschließlich über HTTPS wirksam ist.
<IfModule mod_rewrite.c>
RewriteEngine On
# 1. HTTP → HTTPS (muss zuerst kommen)
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 2. non-www → www (greift nur noch auf HTTPS)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{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)
# 'expr=%{HTTPS} == 'on'' stellt sicher, dass der Header nur über
# HTTPS gesendet wird – Browser ignorieren ihn über HTTP ohnehin.
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" "expr=%{HTTPS} == 'on'"
</IfModule>Hinweis: Wenn Sie non-www als kanonische Domain bevorzugen, ersetzen Sie Regel 2 durch folgendes:
# Alternative: www → non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [L,R=301]⚠️ Warnung: Der Parameter includeSubDomains erzwingt SSL für alle Subdomains der Domain (auch mail.domain.com, shop.domain.com, etc.). Stellen Sie sicher, dass alle Subdomains über ein gültiges SSL-Zertifikat verfügen, bevor Sie diesen Parameter setzen.
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.
