TLS & Zertifikate auf Hetzner konfigurieren
Schritt-für-Schritt-Anleitung: Let's Encrypt mit certbot installieren, TLS 1.3 mit sicheren Cipher-Suites konfigurieren, OCSP Stapling aktivieren und die Konfiguration auf Ihrem Hetzner Server verifizieren.
TLS & Zertifikate auf Hetzner
Transport Layer Security (TLS) verschlüsselt die Kommunikation zwischen Browser und Server. Auf Hetzner Cloud Servern ist Let's Encrypt mit certbot der Standardweg für kostenlose, automatisch erneuerte TLS-Zertifikate. Die Konfiguration umfasst drei Aspekte: Zertifikatsbezug, Protokoll-/Cipher-Konfiguration und OCSP Stapling.
Im Wolf-Agents Web Security Check bringt TLS 4 von 166 Punkten. Die niedrige Punktzahl spiegelt wider, dass TLS heute Baseline ist — aber eine schlechte TLS-Konfiguration (veraltete Protokolle, schwache Ciphers) wird mit deutlichem Punktabzug bestraft. Auf Hetzner-Servern gibt es zusätzlich die Besonderheit des Load Balancers, der TLS-Termination durchführen kann.
certbot installieren und Zertifikat beziehen
Let's Encrypt ist kostenlos und die Zertifikate werden alle 90 Tage automatisch erneuert. Auf Hetzner Cloud Servern (Ubuntu/Debian) installieren Sie certbot mit dem passenden Webserver-Plugin. Das Plugin konfiguriert den Webserver automatisch.
# certbot auf Hetzner Cloud Server installieren (Ubuntu/Debian)
sudo apt update
sudo apt install certbot python3-certbot-nginx
# Zertifikat beziehen (Nginx)
sudo certbot --nginx -d ihre-domain.de -d www.ihre-domain.de
# Für Apache:
# sudo apt install certbot python3-certbot-apache
# sudo certbot --apache -d ihre-domain.de -d www.ihre-domain.de
# Auto-Renewal prüfen
sudo certbot renew --dry-run
# Timer für automatische Erneuerung (Standard: aktiv)
sudo systemctl status certbot.timer TLS 1.3 und sichere Cipher-Suites konfigurieren
certbot konfiguriert eine grundlegende TLS-Einstellung, aber die Defaults sind oft nicht optimal. Deaktivieren Sie TLS 1.0 und 1.1 explizit, konfigurieren Sie sichere Cipher-Suites und setzen Sie ssl_prefer_server_ciphers off — bei TLS 1.3 wählt der Client ohnehin die Cipher automatisch.
# /etc/nginx/snippets/tls-config.conf
# Include in jedem server{}-Block mit SSL:
# include snippets/tls-config.conf;
# Nur TLS 1.2 und 1.3 — keine älteren Versionen
ssl_protocols TLSv1.2 TLSv1.3;
# Client wählt Cipher (TLS 1.3 wählt automatisch)
ssl_prefer_server_ciphers off;
# Sichere Cipher-Suites für TLS 1.2
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384";
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 127.0.0.1 valid=300s;
resolver_timeout 5s;
# Session-Tickets (Performance)
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # /etc/apache2/conf-available/tls-config.conf
<IfModule mod_ssl.c>
# Nur TLS 1.2 und 1.3
SSLProtocol -all +TLSv1.2 +TLSv1.3
# Sichere Cipher-Suites
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
# OCSP Stapling
SSLUseStapling on
SSLStaplingCache shmcb:/var/run/apache2/ssl_stapling(128000)
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
</IfModule>
# Aktivieren:
# sudo a2enmod ssl
# sudo a2enconf tls-config
# sudo systemctl reload apache2 OCSP Stapling verstehen
OCSP Stapling ist bereits in den Konfigurationen aus Schritt 2 enthalten (ssl_stapling on für Nginx, SSLUseStapling on für Apache). Ohne OCSP Stapling muss der Browser bei jedem TLS-Handshake den Zertifikatsstatus separat bei der CA abfragen — das verlangsamt den Verbindungsaufbau und leakt die Domain an die CA.
Wenn Sie den Hetzner Load Balancer nutzen, führt dieser die TLS-Termination durch. In diesem Fall läuft die Verbindung zwischen LB und Backend unverschlüsselt (HTTP). Die TLS-Konfiguration (Protokolle, Ciphers, OCSP) wird im LB verwaltet, nicht im Nginx/Apache auf dem Server. Zertifikate laden Sie direkt in der Hetzner Cloud Console hoch. certbot auf dem Backend-Server ist dann nicht nötig.
TLS-Konfiguration verifizieren
TLS ist ein Transport-Layer-Protokoll — es wird nicht per curl -sI | grep tls geprüft. Verwenden Sie openssl s_client für TLS-Details und curl nur für den HSTS-Header (der separat von TLS ist).
# TLS-Version und Cipher prüfen
openssl s_client -connect ihre-domain.de:443 -brief
# Erwartete Ausgabe:
# Protocol version: TLSv1.3
# Ciphersuite: TLS_AES_256_GCM_SHA384
# OCSP Stapling prüfen
openssl s_client -connect ihre-domain.de:443 -status 2>/dev/null | grep -A 5 "OCSP Response"
# Erwartete Ausgabe:
# OCSP Response Status: successful (0x0)
# Zertifikat-Details anzeigen
openssl s_client -connect ihre-domain.de:443 2>/dev/null | openssl x509 -noout -dates -subject
# notBefore, notAfter, subject
# HSTS-Header prüfen (separater Header, nicht TLS)
curl -sI https://ihre-domain.de | grep -i strict-transport-security Häufige Fehler bei TLS auf Hetzner
certbot erneuert, aber TLS-Config bleibt alt
certbot erneuert automatisch die Zertifikate, aber nicht die TLS-Konfiguration (Protokolle, Ciphers). Wenn Sie certbot vor Jahren installiert haben, kann die Konfiguration noch TLS 1.0/1.1 erlauben. Prüfen Sie mit openssl s_client -connect domain:443 -tls1 — wenn die Verbindung gelingt, ist TLS 1.0 noch aktiv.
TLS 1.0/1.1 noch aktiv auf alten Konfigurationen
Ältere Hetzner-Server mit Ubuntu 18.04 oder Debian 9 haben oft noch ssl_protocols TLSv1 TLSv1.1 TLSv1.2 in der Konfiguration. TLS 1.0 und 1.1 sind seit 2021 von allen Browsern als unsicher eingestuft und seit PCI DSS 3.2.1 verboten. Entfernen Sie sie explizit.
ssl_stapling_verify fehlt
ssl_stapling on allein reicht nicht. Ohne ssl_stapling_verify on prüft Nginx nicht, ob die OCSP-Antwort gültig ist. Im schlimmsten Fall wird eine ungültige OCSP-Antwort an den Client weitergegeben. Stellen Sie sicher, dass auch ein resolver konfiguriert ist.
Hetzner LB: TLS-Termination vs. Backend-TLS
Wenn der Hetzner Load Balancer TLS terminiert, läuft die Verbindung zum Backend über HTTP. Das bedeutet: Ihre Nginx/Apache TLS-Konfiguration auf dem Backend-Server hat keinen Effekt. Die TLS-Einstellungen werden im LB verwaltet. Wenn Sie End-to-End-Verschlüsselung benötigen, konfigurieren Sie den LB im „TCP"-Modus statt „HTTP".
Compliance-Relevanz
TLS 1.2+ ist eine harte Anforderung in mehreren Compliance-Frameworks. PCI DSS Req 4.2.1 fordert starke Kryptographie für die Übertragung von Karteninhaberdaten — TLS 1.0 und 1.1 erfüllen diese Anforderung nicht. NIS2 Art. 21(h) verlangt den Einsatz von Kryptographie und Verschlüsselung. Das BSI TR-02102-2 definiert empfohlene TLS-Konfigurationen für den deutschen Markt. Der Wolf-Agents Web Security Check bewertet TLS mit bis zu 4 Punkten und prüft Protokollversion, Cipher-Suites und OCSP Stapling.
Wie steht Ihre Domain bei TLS & Zertifikate?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.