proxy_ssl_server_name
Maxim Dounin
mdounin на mdounin.ru
Пн Июн 29 15:00:12 UTC 2020
Hello!
On Sun, Jun 28, 2020 at 09:46:14PM +0300, Gena Makhomed wrote:
> Максим, а зачем по-умолчанию сделано proxy_ssl_server_name off; ?
На то есть две причины:
1. Исторически nginx не умел SNI в соединениях с бэкендами. Когда
поддержка была добавлена - поведение по умолчанию было оставлено
"как есть", дабы не ломать существующие конфигурации, где это
может оказаться важно.
2. Использование SNI означает передачу имени сервера открытым
текстом, что в общем случае - утечка данных. Если мы хотим
шифровать трафик с бэкендами - странно допускать подобную утечку
по умолчанию.
> Что-то сломается, если сделать по-умолчанию proxy_ssl_server_name on; ?
Скорее всего нет, но может.
> Применил на одном из серверов workaround
> https://trac.nginx.org/nginx/ticket/195#comment:6
>
> В результате - один из сервисов защиты от DDoS прислал уведомление,
> что сайт не работает, потому что у них, по всей видимости в конфиге
> все настроено по-умолчанию proxy_ssl_server_name off; и это стало
> причиной проблем. Подробнее об этом написано в том же 195 тикете:
> https://trac.nginx.org/nginx/ticket/195#comment:11
Если у вас среди клиентов есть те, кто не использует SNI - не надо
запрещать соединения без SNI. Описанное в тикете решение с
"ssl_ciphers aNULL;" совершенно не обязательно применять в сервере
по умолчанию, а если всё-таки применять - то стоит понимать
последствия.
Что до "сервисов защиты", то почему они не используют SNI - это
вопрос к ним, а не к настройкам по умолчанию nginx'а. Настройки
по умолчанию расчитаны на работу с собственными бэкендами, и если
там используется nginx - они так или иначе должны были много что
менять.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru