SSL/TLS Konfiguration

6 Kategorien
Die wichtigsten SSL/TLS-Konfigurationsrichtlinien für Webserver: Nginx · Apache · Cipher Suites · HSTS · Security Headers · Best Practices Die korrekte SSL/TLS-Konfiguration ist entscheidend für die Sicherheit Ihrer Webanwendungen. Diese Cheatsheet fasst die wichtigsten Einstellungen für Nginx, Apache und moderne Sicherheitsstandards zusammen.

Nginx – SSL/TLS Konfiguration

ssl_certificate · ssl_protocols · ssl_ciphers
ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; ssl_protocols TLSv1.2 TLSv1.3;

Nginx SSL-Konfiguration – Die wichtigsten Direktiven für eine sichere TLS-Konfiguration im Nginx-Webserver.

Wichtige Nginx-Direktiven

Direktive Beschreibung Empfehlung
ssl_certificate Pfad zum Zertifikat (inkl. Chain) /etc/letsencrypt/live/domain/fullchain.pem
ssl_certificate_key Pfad zum privaten Schlüssel /etc/letsencrypt/live/domain/privkey.pem
ssl_protocols Erlaubte TLS-Versionen TLSv1.2 TLSv1.3
ssl_ciphers Erlaubte Cipher Suites ECDHE-ECDSA-AES256-GCM-SHA384:... (siehe unten)
ssl_prefer_server_ciphers Server-Cipher bevorzugen on
ssl_session_cache Session-Caching für Performance shared:SSL:10m
ssl_session_timeout Session-Gültigkeit 10m
ssl_stapling OCSP Stapling aktivieren on
ssl_stapling_verify OCSP-Antworten verifizieren on
Beispiele
# Nginx SSL-Konfiguration (modern)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/domain/chain.pem;
# HSTS (HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
Tipp: Verwenden Sie Mozilla SSL Configuration Generator für aktuelle, sichere Konfigurationen für Nginx, Apache und andere Server.

Apache – SSL/TLS Konfiguration

SSLCertificateFile · SSLProtocol · SSLCipherSuite
SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

Apache SSL-Konfiguration – Die wichtigsten Direktiven für eine sichere TLS-Konfiguration im Apache-Webserver.

Wichtige Apache-Direktiven

Direktive Beschreibung Empfehlung
SSLCertificateFile Pfad zum Zertifikat /etc/ssl/certs/server.crt
SSLCertificateKeyFile Pfad zum privaten Schlüssel /etc/ssl/private/server.key
SSLCertificateChainFile Pfad zur Zertifikatskette /etc/ssl/certs/intermediate.crt
SSLProtocol Erlaubte TLS-Versionen all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite Erlaubte Cipher Suites ECDHE-ECDSA-AES256-GCM-SHA384:... (siehe unten)
SSLHonorCipherOrder Server-Cipher bevorzugen on
SSLSessionCache Session-Caching shmcb:/run/ssl_scache(512000)
SSLSessionCacheTimeout Session-Gültigkeit 300
SSLUseStapling OCSP Stapling aktivieren on
SSLStaplingCache OCSP-Cache shmcb:/run/ssl_stapling(512000)
Beispiele
# Apache SSL-Konfiguration (modern)
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384"
SSLHonorCipherOrder on
# OCSP Stapling
SSLUseStapling on
SSLStaplingCache "shmcb:/run/ssl_stapling(512000)"
# HSTS (HTTP Strict Transport Security)
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Tipp: Aktivieren Sie das Modul mod_ssl und mod_headers für SSL und Security Headers: sudo a2enmod ssl headers.

Cipher Suites – Moderne Empfehlungen

ECDHE · GCM · CHACHA20 · PFS
# Empfohlene Cipher Suites (TLS 1.2 & 1.3) ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-RSA-CHACHA20-POLY1305

Cipher Suites – Die Auswahl der richtigen Verschlüsselungsalgorithmen ist entscheidend für Sicherheit und Performance. Bevorzugen Sie Cipher mit Forward Secrecy (PFS) und AEAD.

Empfohlene Cipher Suites

Cipher Suite PFS AEAD Empfehlung
TLS_AES_256_GCM_SHA384 Ja (ECDHE) Ja ★ TLS 1.3
TLS_CHACHA20_POLY1305_SHA256 Ja (ECDHE) Ja ★ TLS 1.3
ECDHE-ECDSA-AES256-GCM-SHA384 Ja Ja ★ Empfohlen
ECDHE-RSA-AES256-GCM-SHA384 Ja Ja ★ Empfohlen
ECDHE-ECDSA-CHACHA20-POLY1305 Ja Ja ★ Empfohlen
ECDHE-RSA-CHACHA20-POLY1305 Ja Ja ★ Empfohlen
DHE-RSA-AES256-GCM-SHA384 Ja Ja ● Akzeptabel
ECDHE-RSA-AES128-GCM-SHA256 Ja Ja ● Akzeptabel
RSA-AES256-GCM-SHA384 Nein Ja ✗ Vermeiden (kein PFS)
TLS_RSA_WITH_3DES_EDE_CBC_SHA Nein Nein ✗ Unsicher
Beispiele
# Mozilla Intermediate (empfohlen)
nginx: ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
# Modern (nur PFS + AEAD)
nginx: ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305"
# Cipher Suites prüfen
openssl ciphers -v 'ECDHE+AES256-GCM:ECDHE+CHACHA20'
Tipp: Verwenden Sie nur Cipher Suites mit Forward Secrecy (ECDHE/DHE) und AEAD-Verschlüsselung (GCM, CHACHA20). Vermeiden Sie CBC-Modus und RSA-only Cipher.

HSTS & OCSP Stapling – Sicherheitserweiterungen

HSTS · includeSubDomains · preload · OCSP
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload HSTS erzwingt HTTPS für alle zukünftigen Verbindungen OCSP Stapling: ssl_stapling on; (Nginx) / SSLUseStapling on (Apache)

HSTS (HTTP Strict Transport Security) zwingt Browser, nur noch HTTPS-Verbindungen zu verwenden. OCSP Stapling beschleunigt die Widerrufsprüfung von Zertifikaten.

HSTS-Parameter

Parameter Beschreibung Empfehlung
max-age Gültigkeitsdauer in Sekunden 63072000 (2 Jahre)
includeSubDomains Gilt auch für Subdomains Empfohlen
preload Für HSTS Preload List Für große Projekte
Beispiele
# HSTS für 2 Jahre (Nginx)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# HSTS (Apache)
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
# OCSP Stapling (Nginx)
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/certs/chain.pem;
# OCSP Stapling (Apache)
SSLUseStapling on
SSLStaplingCache "shmcb:/run/ssl_stapling(512000)"
Tipp: Vor der Aktivierung von HSTS sollten Sie sicherstellen, dass alle Inhalte über HTTPS verfügbar sind. Die HSTS Preload List (https://hstspreload.org/) bietet zusätzlichen Schutz für Ihre Domain.

Security Headers – Zusätzlicher Schutz

CSP · X-Frame-Options · X-Content-Type-Options
X-Frame-Options: DENY X-Content-Type-Options: nosniff Content-Security-Policy: default-src 'self'

Security Headers bieten zusätzlichen Schutz vor Cross-Site-Scripting (XSS), Clickjacking und anderen Angriffen. Sie werden als HTTP-Header gesendet.

Wichtige Security Headers

Header Wert Schutz vor
X-Frame-Options DENY / SAMEORIGIN Clickjacking (iframe-Einbettung)
X-Content-Type-Options nosniff MIME-Type-Sniffing
X-XSS-Protection 1; mode=block Cross-Site-Scripting (veraltet)
Content-Security-Policy default-src 'self' XSS und Injection
Referrer-Policy strict-origin-when-cross-origin Privacy (Referer-Daten)
Permissions-Policy geolocation=() Browser-APIs einschränken
Beispiele
# Nginx Security Headers
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com" always;
# Apache Security Headers
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Tipp: Nutzen Sie SecurityHeaders.com, um Ihre Konfiguration zu testen und Verbesserungen zu identifizieren.

Best Practices – SSL/TLS-Checkliste

TLS 1.2+ · PFS · HSTS · OCSP · Security Headers
Checkliste für sicheres SSL/TLS ✓ TLS 1.2 und TLS 1.3 aktiviert ✓ SSL 2.0/3.0, TLS 1.0/1.1 deaktiviert ✓ PFS-Cipher bevorzugt (ECDHE/DHE) ✓ HSTS aktiviert (max-age ≥ 31536000) ✓ OCSP Stapling aktiviert ✓ Security Headers gesetzt ✓ Zertifikat gültig & Chain vollständig ✓ Automatische Erneuerung (Let's Encrypt)

SSL/TLS Best Practices – Diese Checkliste fasst die wichtigsten Maßnahmen für eine sichere TLS-Konfiguration zusammen.

Test-Tools
# SSL Labs Test
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
# Security Headers Test
https://securityheaders.com/?q=example.com
# HSTS Preload
https://hstspreload.org/?domain=example.com
# TLS Check (Kommandozeile)
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3
# Cipher Suites prüfen
openssl s_client -connect example.com:443 -cipher 'ECDHE+AES256-GCM:ECDHE+CHACHA20'
Tipp: Führen Sie regelmäßige Tests mit SSL Labs durch und überprüfen Sie die HSTS Preload List, um Ihre Domain für die Zukunft zu sichern.

SSL/TLS Konfiguration im Überblick

TLS 1.3 Schnellste & sicherste Version
Seit 2018
PFS Forward Secrecy
ECDHE / DHE
HSTS HTTPS erzwingen
max-age=63072000
OCSP Widerrufsprüfung
Stapling für Performance
CSP Content Security Policy
XSS-Schutz
A+ SSL Labs Bewertung
Ziel für jede Konfiguration

Quick Summary

Nginx
SSL-Konfiguration
Apache
SSL-Konfiguration
Cipher
PFS + AEAD
HSTS
HTTPS erzwingen
Headers
Security Headers
Checkliste
Best Practices
ssl_protocols TLSv1.2 TLSv1.3; · ssl_ciphers ECDHE+AES256-GCM:ECDHE+CHACHA20; · add_header Strict-Transport-Security "max-age=63072000";