Die unten aufgeführten Ciphers können in Ihre Apache-Konfiguration kopiert werden. Sie bieten starke SSL-Sicherheit für alle modernen Browser und erreichen ein A+
im SSL Labs Test. Kurz gesagt wird eine starke Cipher-Suite mit aktivierter Forward Secrecy
konfiguriert, SSLv2
, SSLv3
, TLSv1
, TLSv1.1
werden deaktiviert, HTTP Strict Transport Security
und X-Frame-Deny-Header
werden hinzugefügt und OCSP Stapling
wird aktiviert.
Erstellen Sie eine Konfigurationsdatei ssl-ciphers.conf
im Pfad /etc/apache2/conf-available/
mit folgendem Inhalt:
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off
Die Einstellungen im Detail
- Die Konfiguration
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
für Apache oder einen anderen Webserver wählt starke Verschlüsselungsalgorithmen für die sichere Übertragung von Daten.EECDH+AESGCM
gibt an, dass Elliptic Curve Diffie-Hellman (ECDH) Schlüsselaustausch mitAES GCM
Verschlüsselung bevorzugt wird. Dies ermöglichtForward Secrecy
und verwendet einen der sichersten verfügbaren Verschlüsselungsmethoden.EDH+AESGCM
ist ähnlich, verwendet aber den traditionellen Diffie-Hellman Schlüsselaustausch. Beide sichern die Datenübertragung effektiv gegen Lauschangriffe ab. - Die Konfiguration
SSLProtocol -all +TLSv1.3 +TLSv1.2
deaktiviert alle Protokolle außer TLS 1.2 und TLS 1.3. Das bedeutet, ältere und weniger sichere Protokolle wie SSLv3, TLS 1.0 und TLS 1.1 werden nicht zugelassen. Diese Einstellung verbessert die Sicherheit, indem sie nur die Verwendung der neuesten und als sicher geltenden Protokolle erlaubt. - Die Konfiguration
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
spezifiziert die Reihenfolge und Auswahl der elliptischen Kurven, die für den Schlüsselaustausch während der SSL/TLS-Handshake-Phase verwendet werden sollen.X25519
steht dabei für eine sehr effiziente Kurve, die für hohe Sicherheit bei schneller Performance sorgt. Die anderen genannten Kurven,secp521r1
,secp384r1
undprime256v1
, bieten unterschiedliche Sicherheitsniveaus und Kompatibilität, wobeisecp521r1
die höchste Sicherheit bietet. Diese Einstellung optimiert die Sicherheit und Kompatibilität der SSL/TLS-Verbindungen. - Die Einstellung
SSLHonorCipherOrder On
bewirkt, dass der Server die Reihenfolge der Cipher Suites, die in der SSLCipherSuite Direktive angegeben sind, bestimmt. Das bedeutet, der Server bevorzugt seine eigene Cipher Suite-Liste über die vom Client vorgeschlagene Liste, was die Sicherheit erhöhen kann, indem sicherere Verschlüsselungsmethoden bevorzugt werden. - Die Anweisung
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
konfiguriert denHSTS-Header
so, dass Browser für zwei Jahre (63072000 Sekunden) ausschließlich sichere HTTPS-Verbindungen zu der Domain und allen ihren Subdomains nutzen. Daspreload
-Attribut signalisiert die Bereitschaft, die Domain in die HSTS-Preload-Liste aufnehmen zu lassen, was eine noch stärkere Sicherheitsgarantie bietet, indem es die Nutzung von HTTPS erzwingt, bevor der Browser überhaupt eine Verbindung mit dem Server aufbaut. - Die Direktive
Header always set X-Frame-Options DENY
teilt Webbrowsern mit, dass die Einbettung der Seite in Frames auf anderen Websites vollständig untersagt ist. Dies schützt vor Clickjacking-Angriffen, bei denen Angreifer die echte Seite in einem unsichtbaren Frame überlagern, um Benutzereingaben abzufangen. - Die Direktive
Header always set X-Content-Type-Options nosniff
teilt Browsern mit, dass sie nicht versuchen sollen, den MIME-Typ einer Antwort zu erraten. Stattdessen sollten sie strikt den im Content-Type-Header angegebenen Typ verwenden. Dies verhindert, dass die Seite anfällig für Angriffe ist, bei denen schädlicher Code über scheinbar harmlose Dateitypen eingeschleust wird. - Die Einstellung
SSLCompression off
deaktiviert die SSL/TLS-Kompression für die Verbindung. Dies ist eine Sicherheitsmaßnahme, um die Anfälligkeit gegenüber Angriffen wie CRIME zu reduzieren, die die Kompression ausnutzen, um sensible Daten wie Session-Cookies zu stehlen. - Die Einstellung
SSLUseStapling on
aktiviert das OCSP-Stapling im Server, was bedeutet, dass der Server denOCSP-Status
eines Zertifikats prüft und diesen Status in der ersten Verbindungshandshake-Phase an den Client übermittelt. Dies verbessert die Leistung und die Privatsphäre, da der Client nicht selbst den Zertifikatsstatus beim Zertifizierungsstellen-Server abfragen muss. Der Client kann diesem Vorgang durch Prüfmechanismen innerhalb des OCSP-Stapling-Verfahrens vertrauen. Die OCSP-Antwort, die der Server bereitstellt, ist von der Zertifizierungsstelle (CA) digital signiert. Diese Signatur ermöglicht es dem Client, die Echtheit und Korrektheit der OCSP-Antwort zu verifizieren. Ein Server kann also nicht einfach eine falsche Antwort vorlegen, ohne dass dies erkannt würde, da er nicht über den privaten Schlüssel der CA verfügt, um gültige Signaturen zu erstellen. - Die Einstellung
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
konfiguriert den Cache-Speicherort und die Größe für OCSP-Stapling-Antworten.shmcb
bezieht sich auf den Shared Memory Cache,logs/stapling-cache
ist der Pfad zum Cache, und(150000)
legt die Größe des Caches in Bytes fest. Diese Konfiguration hilft dabei, die Effizienz der SSL/TLS-Verbindung zu verbessern, indem sieverhindert, dass der Server wiederholt OCSP-Anfragen
für das gleiche Zertifikat stellen muss. - Die Einstellung
SSLSessionTickets Off
deaktiviert die Nutzung vonTLS-Session-Tickets
für die Wiederaufnahme von Sessions. Dies erhöht die Sicherheit, da Session-Tickets, wenn sie kompromittiert werden, einem Angreifer ermöglichen könnten, frühere verschlüsselte Kommunikation zu entschlüsseln, falls der Ticket-Schlüssel erlangt wird.
Aktivierung der Konfiguration
$ sudo a2enconf ssl-ciphers
Überprüfen der Syntax
$ sudo apache2ctl configtest
Syntax OK
Laden der Konfiguration
$ sudo systemctl restart apache2