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

TLS / SSL - есть ли у SNI ограничение на количество доменов, работающих на Nginx?

SNI (указание имени сервера) - это расширение протокола TLS / SSL, позволяющее веб-серверу обслуживать несколько доменов на одном IP-адресе с разными сертификатами сервера SSL. SNI обнаруживает сертификат SSL, подходящий для запрашиваемого домена / URL-адреса. До появления SNI все хосты, прослушивающие один и тот же IP-адрес и порт, должны были иметь один и тот же сертификат SSL.

Кто-нибудь знает, есть ли ограничение на количество доменов, которые я могу обслуживать на одном IP?

В стандартном http нет ограничений. Я просто указываю другой виртуальный хост для каждого домена, и веб-сервер сопоставляет клиентский заголовок «Host:» с соответствующим vhost server_name или server_alias. SNI работает аналогично, но соответствует сертификатам SSL, и на одном IP может быть сотни. Интересно, знает ли кто-нибудь, есть ли у SNI ограничение или медленно работает с сотнями сертификатов на одном IP.

SNI по сути такой же, как Host заголовок в HTTP. Главное отличие в том, что Host Заголовок находится только внутри HTTP-запроса и, таким образом, может быть виден веб-сервером только после того, как рукопожатие TLS уже успешно завершено. Вместо этого расширение SNI отправляется в ClientHello, то есть в исходном сообщении, отправленном клиентом в рамках подтверждения TLS. Затем сервер извлекает расширение SNI из рукопожатия TLS, чтобы найти соответствующую конфигурацию (которая включает сертификат) так же, как он извлекает значение Host заголовок, чтобы найти подходящую конфигурацию.

Исходя из этого, не должно быть качественной разницы и дополнительных ограничений для SNI vs Host заголовок. Но будет некоторая количественная разница в том, что для SNI потребуется больше памяти по сравнению с Host заголовок: в дополнение к HTTP-части конфигурации также необходимо хранить в памяти часть SSL, то есть, в частности, сертификат, цепочку сертификатов и закрытый ключ.