> ## Content Index
> Fetch the complete content index at: https://blog.lange-it.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Apache2 | moderne Verschlüsselung
- URL: https://blog.lange-it.com/apache-moderne-verschlusselung/
- Published: 2025-09-29T09:22:11.000Z
- Updated: 2025-09-29T09:38:39.000Z
- Author: Peter Lange
- Tags: SSL-Security

💡

Die folgenden Steps können die Verschlüsselung deiner Apache Dienste drastisch erhöhen!

Eine starke Cipher Liste für Apache wobei das Protokoll **TLS 1.2 und neuer** priorisiert wird, sieht ungefähr so aus:

```bash
EECDH+AESGCM:EDH+AESGCM
```

## Konfiguration

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.

Erstelle eine Konfigurationsdatei **ssl-ciphers.conf** im Pfad **/etc/apache2/conf-available** mit folgendem Inhalt:

```bash
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
```

Erklärung der Einstellungen:

- 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 mit `AES GCM` Verschlüsselung bevorzugt wird. Dies ermöglicht `Forward 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` und `prime256v1`, bieten unterschiedliche Sicherheitsniveaus und Kompatibilität, wobei `secp521r1` 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 den [HSTS-Header](https://de.wikipedia.org/wiki/HTTP%5FStrict%5FTransport%5FSecurity) so, dass Browser für zwei Jahre (63072000 Sekunden) ausschließlich sichere HTTPS-Verbindungen zu der Domain und allen ihren Subdomains nutzen. Das `preload`\-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](https://resources.infosecinstitute.com/topics/hacking/beast-vs-crime-attack/) zu reduzieren, die die Kompression ausnutzen, um sensible Daten wie [Session-Cookies zu stehlen](https://www.forbes.com/sites/forbestechcouncil/2023/07/24/stolen-session-cookies-the-next-big-cyber-threat/?sh=3557221a5c98).
- Die Einstellung `SSLUseStapling on` aktiviert das OCSP-Stapling im Server, was bedeutet, dass der Server den [OCSP-Status](https://de.wikipedia.org/wiki/Online%5FCertificate%5FStatus%5FProtocol) 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 sie `verhindert, dass der Server wiederholt `[OCSP-Anfragen](https://cwiki.apache.org/confluence/display/httpd/OCSPStapling) für das gleiche Zertifikat stellen muss.
- Die Einstellung `SSLSessionTickets Off` deaktiviert die Nutzung von [TLS-Session-Tickets](https://networkradius.com/articles/2023/02/21/what-are-session-tickets.html) 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.

ℹ️

Obwohl diese Einstellungen von Experten sorgfältig ausgewählt wurden, um die Sicherheit der SSL-Verschlüsselung auf Webservern zu erhöhen, sollten Sie sie zunächst sorgfältig testen und für die Verwendung in Ihrer Webanwendung analysieren. Einstellungen wie die Aktivierung von HSTS erzwingen beispielsweise eine permanente Entscheidung für die Verwendung von HTTPS ohne die Möglichkeit, zu HTTP zurückzukehren.

## Aktivieren der Konfiguration

```bash
sudo a2enconf ssl-ciphers
sudo apache2ctl configtest
sudo systemctl restart apache2
```