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+AESGCMfür Apache oder einen anderen Webserver wählt starke Verschlüsselungsalgorithmen für die sichere Übertragung von Daten.EECDH+AESGCMgibt an, dass Elliptic Curve Diffie-Hellman (ECDH) Schlüsselaustausch mitAES GCMVerschlüsselung bevorzugt wird. Dies ermöglichtForward Secrecyund verwendet einen der sichersten verfügbaren Verschlüsselungsmethoden.EDH+AESGCMist ä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.2deaktiviert 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:prime256v1spezifiziert die Reihenfolge und Auswahl der elliptischen Kurven, die für den Schlüsselaustausch während der SSL/TLS-Handshake-Phase verwendet werden sollen.X25519steht dabei für eine sehr effiziente Kurve, die für hohe Sicherheit bei schneller Performance sorgt. Die anderen genannten Kurven,secp521r1,secp384r1undprime256v1, bieten unterschiedliche Sicherheitsniveaus und Kompatibilität, wobeisecp521r1die höchste Sicherheit bietet. Diese Einstellung optimiert die Sicherheit und Kompatibilität der SSL/TLS-Verbindungen. - Die Einstellung
SSLHonorCipherOrder Onbewirkt, 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-Headerso, 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 DENYteilt 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 nosniffteilt 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 offdeaktiviert 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 onaktiviert das OCSP-Stapling im Server, was bedeutet, dass der Server denOCSP-Statuseines 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.shmcbbezieht sich auf den Shared Memory Cache,logs/stapling-cacheist 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-Anfragenfür das gleiche Zertifikat stellen muss. - Die Einstellung
SSLSessionTickets Offdeaktiviert die Nutzung vonTLS-Session-Ticketsfü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
![]()