Налаштування SSLCipherSuite в Apache для підтримки TLS 1.0, 1.1 та 1.2


8

У мене на веб-сервері Apache 2.4.7 працює кілька доменних імен, використовуючи одну IP-адресу. В результаті вразливості пуделя я додав наступний SSLCipherSuiteрядок. Деякий час він працював чудово, але користувачі повідомляють про проблеми з доступом до сторінки у Firefox. Попросити користувачів переключити браузери, на жаль, не є варіантом, тому мені потрібно змінити налаштування для підтримки TLS 1.0, 1.1 та 1.2.

Поточні налаштування:

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

Якщо ми подивимось на тест Qualys , то побачимо, що сервер підтримує лише TLS 1.2.

Які б відповідні налаштування було б увімкнено для TLS 1.0, TLS 1.1 та TLS 1.2, щоб сайт міг підтримувати старі браузери, а також підтримувати гідний рівень безпеки?

Відповіді:


13

Наступна конфігурація є (або раніше була) найкращою конфігурацією відповідно до 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"

Однак він буде виключати всі старі веб-переглядачі (включаючи Opera Mini!), Оскільки в ньому відсутні пакети шифрів, що не належать PFS та RC4. Ви можете додати наступне (звичайно до завершальної пропозиції, звичайно), щоб увімкнути RC4, включаючи резервний (останній запис) до RC4 без PFS:

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

Ви повинні заохотити користувачів оновити якнайшвидше. RC4 зламаний і більше не повинен використовуватися, особливо без PFS.

Щоб досягти кращих оцінок, також надішліть заголовок HSTS (для цього потрібно включити mod_header):

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

Ця конфігурація не працюватиме для Apache <2.2.26, оскільки вона не підтримує криптографію Еліптичної кривої.

Оновлення :
Щойно перевірено, це все ще добре для A +. :) Я вважаю, що для цього потрібен сертифікат на SHA256.

Оновлення жовтня 2015 :
Нещодавно я знайшов ще один генератор для конфігурацій SSL , наданий Mozilla. Він замовляє шифри, щоб Chrome не сказав, що ви використовуєте застарілий набір шифрів.


3

Цю рекомендацію я знайшов на 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)" 

3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

Відключення шифрних пакетів SSLv3 вимикає всі набір шифрів, введених із SSL3.0. Оскільки ці набори шифрів також використовуються з пізнішими версіями SSL (TLS1.0 +), а нові пакети шифрів були в основному представлені разом із TLS1.2, ця настройка робить TLS1.0 та TLS1.1 недоступними через відсутність спільних шифрів. Таким чином, протокол фактично обмежений TLS1.2.

Якщо ви телефонуєте за openssl ciphers -V <cipher>допомогою рядка шифру, ви побачите, що для всіх доступних шифрів потрібен TLS1.2.

Наприклад: openssl ciphers -V TLSv1.2.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.