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.
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+.
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.
# 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
<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> TLS 1.3 erfordert Apache 2.4.36+ und OpenSSL 1.1.1+. Prüfen Sie mit apache2 -v und openssl version.
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.
# 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 |
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 — 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 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. 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.
# 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" 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.