Назад | Перейти на главную страницу

Установка директивы ssl_prefer_server_ciphers в конфигурации nginx

Этот вопрос касается установки правильного значения ssl_prefer_server_ciphers при настройке nginx.

Согласно довольно типичной конфигурации, предложенной Mozilla, значение должно быть off (источник: https://ssl-config.mozilla.org/#server=nginx&server-version=1.17.7&config=intermediate&openssl-version=1.0.1g).

Согласно собственной документации nginx, всегда следует устанавливать значение on: https://www.nginx.com/blog/nginx-https-101-ssl-basics-getting-started/ (найдите в документе ssl_prefer_server_ciphers).

Я не понимаю, какому совету последовать. Оба источника довольно солидны.

Могут ли некоторые отраслевые эксперты посоветовать, когда следует off, и когда on? Также хотелось бы знать обоснование.

когда ssl_prefer_server_ciphers установлен на on, владелец веб-сервера может контролировать, какие шифры доступны.

Причина, по которой этот элемент управления был предпочтительнее, - старые и небезопасные шифры, которые были доступны в SSL, а также TLS v1.0 и TLS v1.1.

Когда сервер поддерживает старые версии TLS и ssl_prefer_server_ciphers выключен, злоумышленник может помешать рукопожатию и заставить соединение использовать слабые шифры, что позволяет расшифровать соединение.

Слабые шифровальные наборы устарели в TLS v1.2 и v1.3, что устраняет необходимость для сервера указывать предпочтительные шифры.

Предпочтительная настройка в современных настройках - ssl_prefer_server_ciphers off, потому что тогда клиентское устройство может выбрать свой предпочтительный метод шифрования на основе аппаратных возможностей клиентского устройства.

Например, если мобильное устройство не поддерживает ускорение AES, оно может выбрать использование шифра ChaCha для повышения производительности.

Итак, есть три категории для включения или выключения этого параметра.

**Modern** : Services with clients that support TLS 1.3 and don't need backward compatibility
**Intermediate** : General-purpose servers with a variety of clients, recommended for almost all systems
**Old** : Compatible with a number of very old clients, and should be used only as a last resort

Единственная ситуация, когда вам нужно отключить этот параметр, - это современная конфигурация, где вам не нужна обратная совместимость, в таких случаях клиент не сможет подключиться со старым ssl / tls, кроме tlsv1.3.

Добавляя к тому, что Теро упомянул выше. Вот страница Mozilla, которая дает некоторые дополнительные объяснения относительно генератора конфигурации ssl, который вы указали в вопросе: https://wiki.mozilla.org/Security/Server_Side_TLS