Настройки SSLCipherSuite в Apache для поддержки TLS 1.0, 1.1 и 1.2


8

У меня есть веб-сервер Apache 2.4.7, работающий с несколькими доменными именами с использованием одного IP-адреса. В результате уязвимости Poodle я добавил следующую 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.