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

303 Dokumentationen verfügbar

Wissensdatenbank

TLS Härtung Nginx Apache Konfiguration

Zuletzt aktualisiert: 05.04.2026 um 19:42 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

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120