Warum braucht jede Website HTTPS mit gültigem Zertifikat?
HTTPS verschlüsselt die Verbindung zwischen Browser und Server, damit niemand unterwegs Daten mitlesen oder verändern kann. Ohne gültiges Zertifikat warnen Browser vor Ihrer Seite – und Google Chrome fragt laut Ankündigung von Google ab Version 154 (Oktober 2026) standardmäßig nach, bevor es eine öffentliche Seite ohne HTTPS zum ersten Mal öffnet.
Auch Google wertet HTTPS: Schon 2014 hat Google es als – damals sehr leichtes – Rankingsignal eingeführt, und in der Selbstprüfung zur Nutzererfahrung fragt Google, ob Seiten sicher ausgeliefert werden. Leiten Sie alle Aufrufe über http:// per 301 auf https:// um; wie das geht, zeigt der Artikel über Weiterleitungen.
Ein Zertifikat ist nur gültig, wenn es nicht abgelaufen ist, zum aufgerufenen Hostnamen passt – also auch zur Variante mit oder ohne www, falls beide erreichbar sind –, von einer vertrauenswürdigen Zertifizierungsstelle stammt und mit vollständiger Zertifikatskette einschließlich Zwischenzertifikat ausgeliefert wird.
Kürzere Laufzeiten ab 2026
Die Laufzeit öffentlicher TLS-Zertifikate sinkt in drei Schritten. Grundlage sind die Baseline Requirements des CA/Browser Forum, nach denen sich die Zertifizierungsstellen richten.
| Ausgestellt ab | Höchstens gültig |
|---|---|
| 15.03.2026 | 200 Tage |
| 15.03.2027 | 100 Tage |
| 15.03.2029 | 47 Tage |
Let’s Encrypt geht schneller vor: Ab 10. Februar 2027 stellt der kostenlose Anbieter standardmäßig Zertifikate mit 64 Tagen Laufzeit aus, 2028 sollen es 45 Tage sein. Manuelles Erneuern ist damit praktisch keine Option mehr. Richten Sie die automatische Verlängerung über das ACME-Protokoll ein, und lassen Sie Ihr Hosting oder Ihre Agentur bestätigen, dass sie läuft. Let’s Encrypt rät, keine festen Erneuerungsintervalle einzuprogrammieren: Clients mit ACME Renewal Information (ARI) erfahren vom Anbieter, wann sie erneuern sollen.
Welche Sicherheits-Header sollte Ihr Server senden?
Mindestens fünf: HSTS, X-Content-Type-Options, einen Schutz vor Clickjacking, eine Referrer-Policy und eine Content-Security-Policy; dazu die Permissions-Policy. Diese HTTP-Header setzen Sie in der Server-Konfiguration, nicht im Seiteninhalt.
| Header | Beispielwert | Wirkung |
|---|---|---|
Strict-Transport-Security |
max-age=31536000; includeSubDomains |
Der Browser ruft die Domain ein Jahr lang nur noch über HTTPS auf. |
Content-Security-Policy |
default-src 'self'; frame-ancestors 'self' |
Legt fest, woher Skripte und andere Dateien kommen dürfen; vor allem Schutz vor eingeschleustem Code (Cross-Site-Scripting). |
X-Content-Type-Options |
nosniff |
Der Browser hält sich an den angegebenen Dateityp und blockiert Skripte und Stylesheets mit falschem Typ. |
X-Frame-Options |
SAMEORIGIN |
Verhindert, dass fremde Seiten Ihre Seite in einem Rahmen einbetten (Clickjacking); moderner ist frame-ancestors in der CSP. |
Referrer-Policy |
strict-origin-when-cross-origin |
An fremde Seiten geht nur die Herkunft (Protokoll und Domain), nicht der Pfad; an HTTP-Ziele gar nichts. |
Permissions-Policy |
camera=(), microphone=(), geolocation=() |
Schaltet Browserfunktionen ab, die Ihre Seite nicht braucht, auch für eingebettete Inhalte. |
So sieht das in der Konfiguration von nginx aus. Der Zusatz always sorgt dafür, dass die Header auch bei Fehlerseiten gesendet werden:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy-Report-Only "default-src 'self'; frame-ancestors 'self'" always;
Für Apache mit dem Modul mod_headers, etwa in der .htaccess:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy-Report-Only "default-src 'self'; frame-ancestors 'self'"
</IfModule>
Bei gemietetem Webspace oder Website-Baukästen hängt es vom Anbieter ab, ob Sie Header selbst setzen können. Fragen Sie im Zweifel Ihren Hoster. Was Ihr Server tatsächlich sendet, zeigt der HTTP-Header-Check.
HSTS mit Bedacht einführen
HSTS wirkt nur, wenn der Header über HTTPS kommt; über HTTP ignorieren Browser ihn. Setzen Sie includeSubDomains erst, wenn wirklich jede Subdomain HTTPS beherrscht, denn sonst sind diese Subdomains für ein Jahr blockiert. Die Aufnahme in die Preload-Liste der Browser (preload) verlangt mindestens ein Jahr max-age und lässt sich laut hstspreload.org nur schwer und mit monatelanger Verzögerung rückgängig machen.
Content-Security-Policy schrittweise schärfen
Eine CSP ist die wirksamste, aber auch anspruchsvollste dieser Angaben. Beginnen Sie mit dem Header Content-Security-Policy-Report-Only: Der Browser meldet Verstöße, blockiert aber noch nichts. Erst wenn keine berechtigten Inhalte mehr gemeldet werden, stellen Sie auf Content-Security-Policy um. Vermeiden Sie 'unsafe-inline', denn damit verliert die Policy einen Großteil ihrer Schutzwirkung; für nötige Inline-Skripte gibt es Nonces und Hashes.
Was ist Mixed Content und wie beheben Sie ihn?
Mixed Content heißt: Eine Seite wird über HTTPS geladen, bindet aber einzelne Dateien über unverschlüsseltes http:// ein. Browser stellen Bilder, Audio und Video dann automatisch auf HTTPS um, blockieren aber Skripte, Stylesheets, iframes, Schriften und Datenabfragen – Teile der Seite funktionieren dann nicht.
Schlecht: Skript und Stylesheet über HTTP
<link rel="stylesheet" href="http://www.example.com/css/style.css">
<script src="http://www.example.com/js/slider.js"></script>
Gut: HTTPS oder relative Pfade auf die eigene Domain
<link rel="stylesheet" href="/css/style.css">
<script src="https://www.example.com/js/slider.js"></script>
- Liefern Sie alle eigenen Dateien über HTTPS aus und verweisen Sie mit relativen Pfaden oder
https://darauf. - Ersetzen Sie in einem CMS alte
http://-Adressen auch in der Datenbank, etwa in Beiträgen und Theme-Einstellungen. Legen Sie vorher eine Sicherung an. - Nutzen Sie bei fremden Diensten deren HTTPS-Adressen.
- Formulare mit
action="http://…"übertragen Eingaben unverschlüsselt – stellen Sie auch sie um.
Als Übergangslösung schreibt die CSP-Anweisung upgrade-insecure-requests Anfragen der Seite automatisch auf HTTPS um. Sie ersetzt aber weder die Korrektur der Adressen noch HSTS.
Warum sollten Sie Versionsnummern verbergen?
Header wie Server: Apache/2.4.2 (Unix) PHP/4.2.2 oder X-Powered-By: PHP/8.1.2 verraten, welche Software in welcher Version läuft. Das erleichtert die gezielte Suche nach bekannten Lücken. Verbergen ersetzt keine Updates, nimmt Angreifern aber eine einfache Abkürzung.
| Software | Einstellung | Hinweis |
|---|---|---|
| nginx | server_tokens off; |
Standard ist on: Version in Fehlerseiten und im Header Server. |
| Apache | ServerTokens Prod und ServerSignature Off |
Standard ist Full; gilt für den ganzen Server, nicht je virtuellem Host. |
| PHP | expose_php = Off |
nur in der php.ini änderbar; unterdrückt den Header X-Powered-By mit der PHP-Version. |
| WordPress | remove_action( 'wp_head', 'wp_generator' ); |
in der functions.php Ihres (Child-)Themes oder in einem Plugin; entfernt das Generator-Meta-Tag mit der Versionsnummer. |
Das OWASP-Projekt empfiehlt außerdem, X-Powered-By ganz zu entfernen und den Header Server wegzulassen oder neutral zu halten.
Wie gefährlich sind veraltete JavaScript-Bibliotheken?
Alte Versionen verbreiteter Bibliotheken enthalten öffentlich dokumentierte Sicherheitslücken, die jeder nachlesen kann. Themes und Plugins bringen oft eigene Bibliotheken mit, die erst mit einem Update des Themes oder Plugins erneuert werden.
| Bibliothek | Betroffen | Problem |
|---|---|---|
| jQuery | vor 3.5.0 | Cross-Site-Scripting (CVE-2020-11022), behoben in 3.5.0 |
| Bootstrap | vor 3.4.1 sowie 4.3.x vor 4.3.1 | Cross-Site-Scripting im Attribut data-template von Tooltip und Popover (CVE-2019-8331) |
| AngularJS (1.x) | alle Versionen | Unterstützung offiziell seit Jänner 2022 beendet |
Welche Version geladen wird, sehen Sie oft schon am Dateinamen oder am Parameter, etwa jquery.min.js?ver=1.12.4. Aktualisieren Sie CMS, Theme und Plugins regelmäßig. Bricht nach einem jQuery-Update alter Code, hilft das offizielle Plugin jQuery Migrate beim Übergang; setzen Sie es nur so lange ein, bis der Code angepasst ist.
Was ist eine security.txt?
Die security.txt ist eine kleine Textdatei unter /.well-known/security.txt, die Sicherheitsforschern zeigt, wie sie Ihnen eine Lücke melden können. Das Format beschreibt RFC 9116 aus dem Jahr 2022.
Pflicht sind zwei Felder: Contact mit einem Kontaktweg und Expires mit einem Ablaufdatum, das laut RFC weniger als ein Jahr in der Zukunft liegen sollte. Die Datei muss über HTTPS und als text/plain in UTF-8 ausgeliefert werden. Optional sind unter anderem Preferred-Languages, Canonical, Policy und Encryption.
Contact: mailto:sicherheit@example.com
Expires: 2027-10-01T00:00:00.000Z
Preferred-Languages: de, en
Canonical: https://www.example.com/.well-known/security.txt
Tragen Sie sich eine Erinnerung ein, bevor Expires erreicht ist: Eine abgelaufene Datei signalisiert, dass die Angaben veraltet sein könnten. Wie es um die Datenschutz-Technik Ihrer Website steht, erklärt der Artikel über DSGVO und Impressum.
Diese Punkte jetzt auf Ihrer Seite prüfen
So prüft Auffindig
Zu diesem Thema gehören 11 der 120 Prüfpunkte. Alle Gewichte und Formeln stehen in der Methodik, den Anteil am Gesamtscore finden Sie unter Bereich Sicherheit & Datenschutz.
HTTPS mit gültigem Zertifikat
In Ordnung: Die Seite wird über HTTPS mit gültigem Zertifikat ausgeliefert. Problem: nur HTTP oder ein Zertifikatsfehler (z. B. abgelaufen, falscher Hostname, selbst signiert, fehlendes Zwischenzertifikat) – der Grund steht im Bericht. Ein Problem begrenzt den Gesamtscore auf höchstens 69.
Zertifikat läuft nicht bald ab
In Ordnung: Das Zertifikat ist noch mindestens 14 Tage gültig. Verbesserbar: noch 7 bis 13 Tage gültig, oder der Server nutzt eine TLS-Version unter 1.2. Problem: weniger als 7 Tage gültig.
HSTS-Header (HTTPS erzwingen)
In Ordnung: Strict-Transport-Security ist mit einem max-age von mindestens 180 Tagen (15 552 000 Sekunden) gesetzt. Verbesserbar: max-age größer als 0, aber kürzer. Problem: Der Header fehlt oder max-age ist 0.
Content-Security-Policy (CSP)
In Ordnung: Eine CSP mit default-src oder script-src ist gesetzt (der Bericht nennt 'unsafe-inline' und 'unsafe-eval' als Detail). Verbesserbar: nur frame-ancestors oder upgrade-insecure-requests, oder die Policy steht nur im Beobachtungsmodus (Report-Only). Problem: keine CSP.
Schutz vor falsch erkannten Dateitypen
In Ordnung: Der Header X-Content-Type-Options: nosniff ist gesetzt. Problem: Der Header fehlt.
Schutz vor Clickjacking
In Ordnung: X-Frame-Options (DENY oder SAMEORIGIN) oder die CSP-Anweisung frame-ancestors ist gesetzt. Verbesserbar: nur das veraltete ALLOW-FROM. Problem: kein Schutz.
Referrer- und Permissions-Policy
In Ordnung: Eine Referrer-Policy (nicht unsafe-url oder no-referrer-when-downgrade) und eine Permissions-Policy sind gesetzt. Verbesserbar: nur eine der beiden. Problem: keine. Eine Referrer-Policy mit ungültigem Wert wirkt nicht und zählt wie eine fehlende.
Kein Mixed Content (unsichere Inhalte)
In Ordnung: Die HTTPS-Seite lädt keine Inhalte über http://. Verbesserbar: nur passive Inhalte wie Bilder, Videos oder Audio über http://, oder die CSP enthält upgrade-insecure-requests. Problem: aktive Inhalte (Skripte, Stylesheets, iframes, Objekte) oder Formularziele über http://. Entfällt bei Seiten ohne HTTPS.
Keine Versionsnummern in Server-Angaben
In Ordnung: keine Versionsnummern in den Headern Server, X-Powered-By, X-AspNet-Version, X-AspNetMvc-Version und X-Generator sowie im generator-Meta-Tag. Verbesserbar: Version nur im generator-Meta-Tag. Problem: Version in einem HTTP-Header.
security.txt für Sicherheitsmeldungen
In Ordnung: /.well-known/security.txt ist eine Textdatei mit Contact und einem Expires-Datum in der Zukunft. Verbesserbar: Contact ist vorhanden, aber Expires fehlt oder ist abgelaufen. Problem: Die Datei fehlt.
Keine veralteten JavaScript-Bibliotheken
In Ordnung: Keine veraltete Bibliothek erkannt. Verbesserbar: mindestens eine – jQuery unter 3.5.0, Bootstrap 3 unter 3.4.1, Bootstrap 4 unter 4.3.1 oder AngularJS 1.x.
Häufige Fragen
Reicht ein kostenloses Let’s-Encrypt-Zertifikat?
Ja. Let’s Encrypt ist eine kostenlose Zertifizierungsstelle, deren Zertifikate gängige Browser akzeptieren. Entscheidend ist die automatische Erneuerung: Ab 10. Februar 2027 stellt Let’s Encrypt standardmäßig Zertifikate mit nur 64 Tagen Laufzeit aus.
Kann ich Sicherheits-Header auch per Meta-Tag setzen?
Nur teilweise. Eine Content-Security-Policy funktioniert auch als <meta http-equiv>, ihre Report-Only-Variante aber nicht. X-Frame-Options wirkt laut MDN nur als HTTP-Header, und HSTS muss als Header über HTTPS kommen. Setzen Sie Sicherheits-Header daher in der Server-Konfiguration.
Können Sicherheits-Header meiner Website schaden?
Falsch gesetzt können sie Funktionen blockieren: Eine zu strenge CSP sperrt etwa eingebettete Karten oder Schriften, und HSTS mit includeSubDomains macht Subdomains ohne HTTPS unerreichbar. Testen Sie die CSP deshalb zuerst im Report-Only-Modus und aktivieren Sie includeSubDomains erst, wenn alle Subdomains HTTPS beherrschen.
Ist eine security.txt Pflicht?
Nein. RFC 9116 ist ein Informations-RFC, keine gesetzliche Vorgabe. Die Datei ist aber in wenigen Minuten angelegt und macht es leicht, Sie über Sicherheitslücken zu informieren.
Quellen
- Google Security Blog: HTTPS by default (28.10.2025)
- Google Search Central Blog: HTTPS as a ranking signal (07.08.2014)
- Google Search Central: Nutzerfreundlichkeit der Seite (Page Experience)
- CA/Browser Forum: Baseline Requirements für TLS-Server-Zertifikate (Abschnitte 1.2.2 und 6.3.2)
- CA/Browser Forum: Ballot SC-081v3 – Verkürzung der Laufzeiten
- Let’s Encrypt: 64-Day Certificate Lifetimes Coming Feb 2027 (07.10.2026)
- MDN Web Docs: Strict-Transport-Security
- hstspreload.org: HSTS-Preload-Liste – Voraussetzungen
- MDN Web Docs: Content Security Policy (CSP)
- MDN Web Docs: X-Content-Type-Options
- MDN Web Docs: X-Frame-Options
- MDN Web Docs: Referrer-Policy
- MDN Web Docs: Permissions-Policy
- MDN Web Docs: Mixed content
- OWASP Cheat Sheet Series: HTTP Security Response Headers
- nginx-Dokumentation: Modul ngx_http_headers_module (add_header)
- nginx-Dokumentation: Modul ngx_http_core_module (server_tokens)
- Apache HTTP Server 2.4: mod_headers
- Apache HTTP Server 2.4: Core-Direktiven (ServerTokens, ServerSignature)
- PHP-Handbuch: php.ini-Direktiven (expose_php)
- WordPress Developer Resources: wp_generator()
- jQuery Blog: jQuery 3.5.0 Released (10.04.2020)
- CVE-Programm: CVE-2020-11022 (jQuery)
- CVE-Programm: CVE-2019-8331 (Bootstrap)
- AngularJS: Version Support Status
- RFC 9116: A File Format to Aid in Security Vulnerability Disclosure (security.txt)