TLS-Härtung – Nginx und Apache sicher konfigurieren (TLS 1.3, moderne Cipher) | Enjyn Gruppe
Hallo Welt
→
→
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

330 Dokumentationen verfügbar

Wissensdatenbank

TLS Härtung Nginx Apache Konfiguration

Zuletzt aktualisiert: 14.07.2026 um 12:29 Uhr

TLS-Härtung – Nginx und Apache sicher konfigurieren (TLS 1.3, moderne Cipher)

Transport Layer Security (TLS) ist fundamental für sichere HTTPS-Verbindungen. Viele Server-Konfigurationen verwenden jedoch veraltete Standards und schwache Cipher-Suites, die Ihre Benutzer gefährden. Dieses Tutorial zeigt, wie Sie Nginx und Apache modern und sicher konfigurieren.

Warum TLS-Härtung wichtig ist

  • Veraltete Protokolle entfernen – SSLv3, TLS 1.0, TLS 1.1 sind anfällig und sollten deaktiviert sein
  • Schwache Ciphers blockieren – Viele alte Cipher-Suites sind kryptographisch gebrochen
  • Perfect Forward Secrecy – Selbst wenn ein Langzeit-Schlüssel kompromittiert wird, sind alte Sessions sicher
  • Compliance – PCI-DSS, HIPAA und andere Standards fordern starke TLS-Konfiguration
  • Benutzer-Vertrauen – Moderne Browser warnen vor schwachen TLS-Konfigurationen

Aktuelle TLS-Konfiguration überprüfen

Mit testssl.sh

Installieren Sie testssl.sh:

git clone https://github.com/drwetter/testssl.sh.git
cd testssl.sh
chmod +x testssl.sh

Dann scannen Sie Ihren Server:

./testssl.sh https://your-domain.com 2>&1 | tee ssl-scan.txt

Die Ausgabe zeigt:

  • Unterstützte Protokolle (TLS-Versionen)
  • Cipher-Suites und deren Stärke
  • Sicherheitslücken und Empfehlungen
  • Zertifikat-Gültigkeit

Mit Qualys SSL Labs

Online-Tool: https://www.ssllabs.com/ssltest/

Dies bietet einen einfachen, grafischen Überblick über die aktuelle Konfiguration.

💡 Tipp: SSL Labs zeigt eine Note (A+, A, B, etc.). Ziel sollte mindestens "A" sein, besser noch "A+".

Nginx TLS-Härtung

Grundlegende Protokoll-Konfiguration

Bearbeiten Sie /etc/nginx/nginx.conf oder eine virtuelle Host-Datei:

http {
    # Nur sichere TLS-Versionen zulassen
    ssl_protocols TLSv1.2 TLSv1.3;

    # Cipher Suites priorisieren (nach Stärke)
    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;

    # Server entscheidet die Cipher-Priorität, nicht der Client
    ssl_prefer_server_ciphers on;

    # Session Konfiguration
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
}

Virtual Host Konfiguration

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name your-domain.com;

    # Zertifikat und Schlüssel
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # HSTS Header (HTTP Strict Transport Security)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # OCSP Stapling (optional)
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /path/to/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # Weitere Security Headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    location / {
        proxy_pass http://backend;
    }
}

Perfect Forward Secrecy (DHParams)

Generieren Sie starke Diffie-Hellman Parameter (einmalig):

sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096

Dies dauert mehrere Minuten. Dann in nginx.conf einbinden:

ssl_dhparam /etc/nginx/dhparam.pem;
⚠️ Wichtig: dhparam.pem Generierung mit 4096 bit ist rechenintensiv. Für Produktionsumgebungen sollte dies vorab durchgeführt werden, nicht live auf dem Server.

Nginx neu laden und testen

sudo nginx -t
sudo systemctl reload nginx

Apache TLS-Härtung

Grundlegende Protokoll-Konfiguration

Bearbeiten Sie /etc/apache2/mods-available/ssl.conf:

# Nur sichere Protokolle
SSLProtocol -all +TLSv1.2 +TLSv1.3

# Moderne Cipher-Suite
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384

# Server bevorzugt Cipher-Reihenfolge
SSLHonorCipherOrder on

# Session Caching
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(512000)
SSLSessionCacheTimeout 300

VirtualHost Konfiguration

Bearbeiten Sie /etc/apache2/sites-available/your-domain.conf:


    ServerName your-domain.com
    ServerAlias www.your-domain.com

    SSLEngine on
    SSLCertificateFile /path/to/fullchain.pem
    SSLCertificateKeyFile /path/to/privkey.pem
    SSLCertificateChainFile /path/to/chain.pem

    # HSTS Header
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

    # OCSP Stapling
    SSLUseStapling on
    SSLStaplingCache shmcb:/var/run/ocsp(128000)

    # Weitere Security Headers
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"

    DocumentRoot /var/www/your-domain

Perfect Forward Secrecy (DHParams) für Apache

sudo openssl dhparam -out /etc/apache2/dhparam.pem 4096

Dann in ssl.conf:

SSLOpenSSLConfCmd DHParameters "/etc/apache2/dhparam.pem"

Apache Module aktivieren

sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod rewrite

Dann Apache überprüfen und neu laden:

sudo apache2ctl configtest
sudo systemctl reload apache2

HSTS (HTTP Strict Transport Security) Header

HSTS zwingt Browser, immer HTTPS zu verwenden:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Erklärung:

  • max-age=31536000 – 1 Jahr (in Sekunden). Browser nutzen HSTS für diese Dauer
  • includeSubDomains – Auch alle Subdomains müssen HTTPS verwenden
  • preload – Registrieren Sie Ihre Domain in der HSTS Preload List für weitere Sicherheit

HSTS Preload registrieren: https://hstspreload.org/

OCSP Stapling konfigurieren

OCSP (Online Certificate Status Protocol) Stapling verheim Zertifikat-Sperrungsüberprüfungen:

Für Nginx:

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/ca-bundle.pem;
resolver 8.8.8.8 8.8.4.4;

Für Apache:

SSLUseStapling on
SSLStaplingCache shmcb:/var/run/ocsp(128000)

OCSP Response testen

openssl ocsp -no_nonce -issuer /path/to/chain.pem -cert /path/to/cert.pem -url http://ocsp.example.com -header "HOST" "ocsp.example.com"

TLS Session Tickets

Session Tickets ermöglichen schnellere Verbindungen, können aber Sicherheitsrisiken einführen:

Für maximale Sicherheit deaktivieren Sie Session Tickets:

# Nginx
ssl_session_tickets off;

# Apache
SSLSessionTickets off

Cipher-Suite Erklärung

Eine moderne Cipher-Suite wie ECDHE-RSA-AES256-GCM-SHA384 besteht aus:

Komponente Beispiel Funktion
Schlüsselaustausch ECDHE Elliptic Curve Diffie-Hellman Ephemeral (Perfect Forward Secrecy)
Authentifizierung RSA Server wird mit RSA-Zertifikat authentifiziert
Verschlüsselung AES256 256-bit Advanced Encryption Standard
Mode GCM Galois/Counter Mode (AEAD - authentifizierte Verschlüsselung)
Integrität SHA384 SHA-384 für Integrität und Pseudorandom Function
✅ Gut zu wissen: Die beste moderne Cipher Suite beginnt mit ECDHE (Ephemeral Key Exchange) für PFS und nutzt AEAD Modi wie GCM oder ChaCha20-Poly1305.

Schwache Cipher blockieren

Explicit blockieren Sie:

# NULL ciphers (keine Verschlüsselung)
# !NULL

# Export Ciphers (schwache Schlüssellängen)
# !EXP

# Anonymous DH/ECDH (keine Server-Authentifizierung)
# !aNULL

# MD5 Hashing (kryptographisch gebrochen)
# !MD5

# DES Verschlüsselung (zu kurz)
# !DES

# RC4 (anfällig)
# !RC4

Vergleich: Vor und Nach TLS-Härtung

Aspekt Vor Härtung Nach Härtung SSL Labs Grade
TLS Versionen SSLv3, TLS 1.0, 1.1, 1.2 TLS 1.2, 1.3 nur Verbessert
Cipher-Suite Schwache und veraltete Ciphers Nur moderne, starke AEAD Ciphers Verbessert
Perfect Forward Secrecy Nicht aktiviert Nur ECDHE/DHE Verbessert
HSTS Nicht konfiguriert Aktiviert mit Preload Verbessert
OCSP Stapling Deaktiviert Aktiviert Verbessert
Typische Note B oder C A+ oder A A+ / A

Checkliste für sichere TLS-Konfiguration

  • [ ] Nur TLS 1.2 und 1.3 aktiviert
  • [ ] Schwache Protokolle (SSLv3, TLS 1.0, 1.1) deaktiviert
  • [ ] Moderne AEAD Cipher-Suites definiert
  • [ ] Perfect Forward Secrecy (DHParams oder ECDHE) aktiviert
  • [ ] HSTS Header konfiguriert und Preload registriert
  • [ ] OCSP Stapling aktiviert
  • [ ] Session Tickets deaktiviert (oder mit DH Parameters)
  • [ ] Mit testssl.sh oder SSL Labs validiert
  • [ ] Zertifikat ist gültig und nicht selbstsigniert (für Produktion)
  • [ ] Automatische Zertifikat-Erneuerung konfiguriert (Let's Encrypt)

Automatische Zertifikat-Verwaltung mit Certbot

sudo apt install certbot python3-certbot-nginx

# Nginx
sudo certbot --nginx -d your-domain.com

# Apache
sudo certbot --apache -d your-domain.com

# Automatische Erneuerung
sudo certbot renew --dry-run

Zusammenfassung

Eine richtig gehärtete TLS-Konfiguration ist essentiell für sichere HTTPS-Verbindungen. Mit den modernen Cipher-Suites, aktuellen TLS-Versionen und Security Headers (HSTS, OCSP) schützen Sie Ihre Benutzer vor Angriffen und erfüllen moderne Sicherheitsstandards.

Weiterführende Ressourcen

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120