Ustawienia SSLCipherSuite w Apache do obsługi TLS 1.0, 1.1 i 1.2

8

Mam serwer WWW Apache 2.4.7 z wieloma nazwami domen przy użyciu jednego adresu IP. W wyniku podatności Poodle dodałem następujący SSLCipherSuitewiersz. Przez jakiś czas działało dobrze, ale użytkownicy zgłaszają problemy z dostępem do strony w przeglądarce Firefox. Proszenie użytkowników o zmianę przeglądarki niestety nie wchodzi w grę, więc muszę zmienić ustawienia, aby obsługiwały TLS 1.0, 1.1 i 1.2.

Obecne ustawienia to:

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

Jeśli spojrzymy na test Qualys , zobaczymy, że serwer obsługuje tylko TLS 1.2.

Jakie byłyby odpowiednie ustawienia dla włączenia TLS 1.0, TLS 1.1 i TLS 1.2, aby strona mogła obsługiwać starsze przeglądarki, a także utrzymywać przyzwoity poziom bezpieczeństwa?

Kristian
źródło

Odpowiedzi:

13

Następująca konfiguracja jest (lub była) najlepszą konfiguracją zgodnie z 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"

Wyklucza to jednak wszystkie starsze przeglądarki (w tym Opera Mini!), Ponieważ brakuje w nim szyfrów innych niż PFS i RC4. Możesz dołączyć następujące (oczywiście przed cytatem zamykającym), aby włączyć RC4, w tym awarię (ostatni wpis) do RC4 bez PFS:

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

Powinieneś zachęcić użytkowników do jak najszybszej aktualizacji. RC4 jest zepsuty i nie powinien być dłużej używany, szczególnie bez PFS.

Aby osiągnąć lepsze oceny, wyślij również nagłówek HSTS (aby to zadziałało, musisz włączyć mod_header):

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

Ta konfiguracja nie będzie działać dla Apache <2.2.26, ponieważ nie obsługuje kryptografii krzywej eliptycznej.

Aktualizacja :
właśnie zaznaczona, nadal jest dobra dla A +. :) Myślę jednak, że wymaga to certyfikatu SHA256.

Aktualizacja październik 2015 :
Niedawno znalazłem inny generator konfiguracji SSL , dostarczony przez Mozillę. Porządkuje szyfry, aby Chrome nie powiedział, że używasz przestarzałego zestawu szyfrów.

Daniel B.
źródło
3

Znalazłem to zalecenie na Cipherli.st :

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
źródło
3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

Wyłączenie zestawów szyfrów SSLv3 wyłącza wszystkie zestawy szyfrów wprowadzone w SSL3.0. Ponieważ te zestawy szyfrów są również używane w późniejszych wersjach SSL (TLS1.0 +), a nowe zestawy szyfrów zostały głównie wprowadzone w TLS1.2, to ustawienie sprawia, że ​​TLS1.0 i TLS1.1 są niedostępne z powodu braku współdzielonych szyfrów. Dlatego protokół jest skutecznie ograniczony do TLS1.2.

Gdybyś zadzwonił openssl ciphers -V <cipher>ze swoim łańcuchem szyfru, zobaczyłbyś, że wszystkie dostępne szyfry wymagają TLS1.2.

Na przykład: openssl ciphers -V TLSv1.2.

Steffen Ullrich
źródło
0

Zobacz dyrektywę SSLOpenSSLConfCmd w konfiguracji Apache 2.4 .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

James B.
źródło