TLS für Apache konfigurieren

Schritt-für-Schritt-Anleitung: mod_ssl aktivieren, SSLProtocol und Cipher Suites konfigurieren, OCSP Stapling einrichten und Zertifikate mit Certbot automatisieren.

Apache · Schritt für Schritt

TLS auf Apache — VirtualHost-basierte Konfiguration mit mod_ssl

Apache HTTP Server konfiguriert TLS über mod_ssl — das leistungsstarke SSL/TLS-Modul, das in jedem Apache enthalten ist. Die VirtualHost-basierte Konfiguration ermöglicht unterschiedliche TLS-Einstellungen pro Domain. Mit der SSLProtocol-Direktive beschränken Sie Apache präzise auf TLS 1.2 und 1.3.

Diese Anleitung konfiguriert Apache für maximale TLS-Sicherheit: ältere Protokolle deaktiviert, sichere Cipher Suites gesetzt, OCSP Stapling aktiviert und automatische Zertifikatserneuerung mit Certbot eingerichtet — optimiert für Qualys SSL Labs A+.

1 Schritt 1 von 4

mod_ssl aktivieren und TLS-Versionen einschränken

Aktivieren Sie zunächst mod_ssl und mod_headers. Dann setzen Sie SSLProtocol -all +TLSv1.2 +TLSv1.3: Der -all-Parameter deaktiviert alle Protokolle, die +-Prefixe aktivieren gezielt TLS 1.2 und 1.3.

Terminal mod_ssl
# mod_ssl aktivieren (Ubuntu/Debian)
sudo a2enmod ssl
sudo a2enmod headers
sudo systemctl restart apache2

# Prüfen ob mod_ssl geladen ist
apache2 -M | grep ssl
/etc/apache2/sites-available/ihre-domain.conf SSLProtocol
# /etc/apache2/sites-available/ihre-domain.conf
<VirtualHost *:443>
    ServerName ihre-domain.de
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/ihre-domain.de/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ihre-domain.de/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/ihre-domain.de/chain.pem

    # TLS 1.0 und 1.1 deaktivieren, nur 1.2 und 1.3 erlauben
    SSLProtocol -all +TLSv1.2 +TLSv1.3

    # Server-Cipher-Präferenz erzwingen (für TLS 1.2)
    SSLHonorCipherOrder on
</VirtualHost>
Apache-Version prüfen

TLS 1.3 erfordert Apache 2.4.36+ und OpenSSL 1.1.1+. Prüfen Sie mit apache2 -v und openssl version.

2 Schritt 2 von 4

Cipher Suites konfigurieren

Apache 2.4.36+ erlaubt getrennte Cipher-Suite-Konfiguration für TLS 1.2 und 1.3. Die unten gezeigten ECDHE-Suites erzwingen Forward Secrecy — selbst wenn der private Schlüssel kompromittiert wird, bleiben vergangene Sessions geschützt.

/etc/apache2/sites-available/ihre-domain.conf SSLCipherSuite
# TLS 1.2 Cipher Suites — ECDHE für Forward Secrecy
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256

# TLS 1.3 Cipher Suites (Apache 2.4.36+)
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256

# Session Tickets deaktivieren (Forward Secrecy)
SSLSessionTickets off
Direktive Wirkt auf Empfehlung
SSLCipherSuite TLS 1.2 (und ältere) ECDHE-Suites, keine RC4/DES/MD5
SSLCipherSuite TLSv1.3 Nur TLS 1.3 Standard-OpenSSL-Defaults ausreichend
SSLHonorCipherOrder TLS 1.2 Verhandlung on — Server-Präferenz erzwingen
3 Schritt 3 von 4

OCSP Stapling und Certbot einrichten

Wichtig: SSLUseStapling muss im Server-Kontext stehen — nicht im VirtualHost. Platzieren Sie diese Direktiven in apache2.conf oder einer global geladenen Konfiguration. Danach richtet Certbot die Zertifikatsverwaltung ein.

/etc/apache2/apache2.conf + Terminal OCSP + Certbot
# /etc/apache2/apache2.conf — Server-Kontext (NICHT in VirtualHost!)
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors Off

# Certbot mit Apache-Plugin installieren
sudo apt install certbot python3-certbot-apache

# Zertifikat beantragen
sudo certbot --apache -d ihre-domain.de

# Automatische Erneuerung prüfen
sudo certbot renew --dry-run
Das Certbot Apache-Plugin kann SSLProtocol und SSLCipherSuite überschreiben. Prüfen Sie Ihre VirtualHost-Konfiguration nach dem Certbot-Lauf und stellen Sie sicher, dass Ihre sicheren Einstellungen erhalten geblieben sind.
4 Schritt 4 von 4

Konfiguration verifizieren

Prüfen Sie immer zuerst mit apachectl configtest, bevor Sie Apache neu starten. Ein Konfigurationsfehler ohne vorherigen Test kann zu einem nicht-startenden Apache führen.

Terminal Verifizierung
# 1. Apache-Konfiguration prüfen
sudo apachectl configtest

# 2. Apache neu starten
sudo systemctl restart apache2

# 3. TLS 1.3 verifizieren
openssl s_client -connect ihre-domain.de:443 -tls1_3 2>&1 | grep -E "Protocol|Cipher"

# Erwartete Ausgabe:
#   Protocol  : TLSv1.3
#   Cipher    : TLS_AES_256_GCM_SHA384

# 4. TLS 1.0 muss abgelehnt werden
openssl s_client -connect ihre-domain.de:443 -tls1 2>&1 | grep "alert"
Vollständiges Audit

Der Wolf-Agents Web Security Check prüft TLS-Version, Cipher Suites und Zertifikatskette als Teil von 166 Prüfpunkten — mit konkreten Handlungsempfehlungen.

Wie steht Ihre Domain bei TLS-Konfiguration?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Wie aktiviere ich mod_ssl in Apache?

Auf Ubuntu/Debian: sudo a2enmod ssl && sudo systemctl restart apache2. Auf CentOS/RHEL ist mod_ssl meist vorinstalliert, aktivieren Sie es mit: sudo dnf install mod_ssl && sudo systemctl restart httpd.

Was bedeutet SSLProtocol -all +TLSv1.2 +TLSv1.3?

Der -all Parameter deaktiviert zunächst alle Protokolle (TLS 1.0, 1.1, 1.2, 1.3). Dann aktivieren +TLSv1.2 und +TLSv1.3 gezielt die sicheren Versionen. Ohne -all würde Apache zusätzlich TLS 1.0 und 1.1 erlauben, was unsicher ist.

Welche SSLCipherSuite-Einstellung ist für Apache empfohlen?

Für neue Server: SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305. Diese Suites erzwingen Forward Secrecy über ECDHE. Kombinieren Sie dies mit SSLHonorCipherOrder On.

Wie unterscheidet sich SSLCipherSuite von SSLCipherSuite TLSv1.3?

Apache 2.4.36+ erlaubt getrennte Konfiguration: SSLCipherSuite TLSv1.3 für TLS-1.3-Cipher-Suites und SSLCipherSuite für TLS-1.2-Cipher-Suites. Ohne die TLSv1.3-Direktive verwendet Apache alle 5 Standard-TLS-1.3-Suites — das ist in der Regel ausreichend.

Was ist SSLUseStapling und wo muss es gesetzt werden?

SSLUseStapling On muss im Server-Kontext (außerhalb von VirtualHost) stehen — nicht im VirtualHost selbst. SSLStaplingCache ebenfalls. Die VirtualHost-Direktive SSLStaplingResponseMaxAge steuert, wie lange gecachte OCSP-Antworten verwendet werden dürfen.

Wie richte ich Certbot für Apache ein?

sudo apt install certbot python3-certbot-apache && sudo certbot --apache -d ihre-domain.de. Das Apache-Plugin von Certbot konfiguriert automatisch SSL-VirtualHost und Weiterleitungsregeln. Prüfen Sie nach dem Ausführen, ob SSLProtocol und SSLCipherSuite unverändert sind.

Wie teste ich TLS 1.3 auf Apache?

openssl s_client -connect ihre-domain.de:443 -tls1_3 — bei Erfolg zeigt die Ausgabe Protocol: TLSv1.3. Testen Sie auch, dass TLS 1.0/1.1 abgelehnt werden: openssl s_client -connect ihre-domain.de:443 -tls1 sollte mit "alert handshake failure" enden.