SSLCipherSuite-Einstellungen in Apache zur Unterstützung von TLS 1.0, 1.1 und 1.2

8

Ich habe einen Apache 2.4.7-Webserver, auf dem mehrere Domänennamen mit einer einzigen IP-Adresse ausgeführt werden. Aufgrund der Pudel-Sicherheitsanfälligkeit habe ich die folgende SSLCipherSuiteZeile hinzugefügt . Es hat eine Weile gut funktioniert, aber Benutzer melden Probleme beim Zugriff auf die Seite in Firefox. Das Auffordern der Benutzer, den Browser zu wechseln, ist leider keine Option. Daher muss ich die Einstellungen ändern, um TLS 1.0, 1.1 und 1.2 zu unterstützen.

Die aktuellen Einstellungen sind:

<VirtualHost ZYX.XYZ.org:443>
DocumentRoot /var/www/ZYX.XYZ/www
ServerName ZYX.XYZ.org

<Directory "/var/www/ZYX.XYZ/">
  allow from all
  Options -Indexes
</Directory>

SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
SSLCertificateFile /etc/apache2/ssl/XYZ.org.crt
SSLCertificateKeyFile /etc/apache2/ssl/XYZ.org.key
SSLCACertificateFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
</VirtualHost>

Wenn wir uns den Test von Qualys ansehen , sehen wir, dass der Server nur TLS 1.2 unterstützt.

Welche Einstellungen wären für die Aktivierung von TLS 1.0, TLS 1.1 und TLS 1.2 geeignet, damit die Site ältere Browser unterstützen und ein angemessenes Sicherheitsniveau aufrechterhalten kann?

Kristian
quelle

Antworten:

13

Die folgende Konfiguration ist (oder war früher) die beste Konfiguration gemäß SSLLabs:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA"

Es werden jedoch alle älteren Browser (einschließlich Opera Mini!) Ausgeschlossen, da keine Nicht-PFS- und RC4-Verschlüsselungssuiten vorhanden sind. Sie können Folgendes anhängen (natürlich vor dem Schlusszitat), um RC4 zu aktivieren, einschließlich eines Fallbacks (letzter Eintrag) an RC4 ohne PFS:

:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:RC4-SHA

Sie sollten Benutzer dazu ermutigen, ASAP zu aktualisieren. RC4 ist defekt und sollte nicht mehr verwendet werden, insbesondere ohne PFS.

Um bessere Noten zu erzielen, senden Sie auch einen HSTS-Header (damit dies funktioniert, müssen Sie aktivieren mod_header):

Header always set Strict-Transport-Security "max-age=63072000;"

Diese Konfiguration funktioniert nicht für Apache <2.2.26, da sie keine Kryptografie mit elliptischen Kurven unterstützt.

Update :
Gerade überprüft, es ist immer noch gut für A +. :) Ich glaube, dies erfordert jedoch ein Zertifikat mit SHA256.

Update Oktober 2015 :
Ich habe kürzlich einen weiteren Generator für SSL-Konfigurationen gefunden , der von Mozilla bereitgestellt wird. Es werden Chiffren bestellt, damit Chrome nicht sagt, dass Sie eine veraltete Chiffresuite verwenden.

Daniel B.
quelle
3

Ich habe diese Empfehlung auf Cipherli.st gefunden :

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
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)" 
Kristian
quelle
3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

Durch Deaktivieren von SSLv3-Verschlüsselungssuiten werden alle mit SSL3.0 eingeführten Verschlüsselungssuiten deaktiviert. Da diese Chiffrensuiten auch mit späteren SSL-Versionen (TLS1.0 +) verwendet werden und neue Chiffresuiten hauptsächlich mit TLS1.2 eingeführt wurden, sind TLS1.0 und TLS1.1 aufgrund dieser Einstellung nicht verfügbar, da keine gemeinsamen Chiffren vorhanden sind. Somit ist das Protokoll effektiv auf TLS1.2 beschränkt.

Wenn Sie openssl ciphers -V <cipher>mit Ihrer Chiffrierzeichenfolge aufrufen würden, würden Sie sehen, dass alle verfügbaren Chiffren TLS1.2 erfordern.

Zum Beispiel : openssl ciphers -V TLSv1.2.

Steffen Ullrich
quelle
0

Siehe SSLOpenSSLConfCmd-Direktive in der Apache 2.4-Konfiguration .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

James B.
quelle