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