Замена ssl_ciphers в конфиге nginx панели ISPmanager 5

среда, 2 марта 2016 г.

Если ставить свежую ISPManager 5 Lite "из коробки", как говорится, и использовать TLS (SSL) шифрование, то можно столкнуться со следующей проблемой: используемые шифры (ssl_ciphers) тем Chrome уже считаются устаревшими.

То есть вот вы создаете SSL сертификат (например, от Letsencrypt), привязываете его к домену и получаете желаемый результат – сайт теперь работает по https. Но если посмотреть подробности, то увидите, что Chrome считает технологии шифрования соединения уже устаревшими. А это значит, что скоро Chrome может начать показывать предупреждения посерьезней.

В общем ближе к делу.


Если откроете конфиг nginx любого хоста, где есть TLS (SSL), то увидите какие шифры используются:

ssl_ciphers HIGH:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!EXP:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
Нам надо их заменить на более свежие. Но менять каждый раз руками для каждого хоста будет не сильно весело, так что надо этот процесс упростить.

Отсюда нам становится известно, что собственный набор шифров можно задать вручную с помощью конфига панели, который находится в /usr/local/mgr5/etc/ispmgr.conf

Там просто добавляет строку 

SSLSecureChiphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!EXP:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Внимание: убедитесь, что этот параметр вписан в одну строку, без переносов!

Другие наборы шифров вы можете посмотреть, например, тут или на cipherli.st или собрать в генераторе от Mozilla 

Следом надо ребутнуть панель, чтобы подхватились новые настройки. В ISPManager 5 ребут делается так

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Теперь во всех новых конфигах хостов nginx (и apache тоже) список шифров будет обновленный. Во всех существующих проще заменить руками, ибо при автоматическом пересоздании конфигов все вручную вписанные вами параметры конфигов потрутся.

Не забываем рестарт nginx

/etc/init.d/nginx restart
Если не рестартится, значит проверяйте еще раз список шифров, не втисался ли перенос строки или еще что-то лишнее.

После чего не забывайте провериться на https://www.ssllabs.com/ssltest/analyze.html
Если получили рейтинг B или ниже, значит высока вероятность, что у вас проблема с Diffie-Hellman. Провериться можно тут https://weakdh.org/sysadmin.html. Подробнее о проблеме и решение вот тут https://www.howtoforge.com/tutorial/how-to-protect-your-debian-and-ubuntu-server-against-the-logjam-attack/

Если все правильно настроите, то будет у вас рейтинг A+ и безопасно настроенные TLS (https) соединения. А что самое важное – с новым набором шифров Chrome будет писать вам "Соединение с __ваш_сайт__ зашифровано с помощью современных наборов шифров".

Copyright © 2010 WEB IT blog