У меня есть хостинг сервера IIS:
example.com/www.example.com
sub1.example.com
sub2.example.com
Они перечислены как 3 отдельных сайта в IIS, все привязаны к одному и тому же IP-адресу через HTTPS на 443. Но все они используют один и тот же SSL-сертификат, который является сертификатом подстановки, охватывающим * .example.com.
Насколько я понимаю, в этом сценарии SNI не нужен, потому что какой бы сертификат сервер ни обслуживал для любого запроса (который является одним и тем же сертификатом), все равно будет работать для всех сайтов, верно? Я сам протестировал его, и, похоже, он работает, но я просто хочу убедиться, что это не приведет к неожиданным неприятным результатам для определенных пользователей (я не хочу использовать SNI, если это возможно, потому что мне нужна поддержка Windows XP для этих места)
Из любопытства я действительно хочу знать, когда у вас есть такая настройка (несколько сайтов через SSL на одном IP-адресе, но без включения SNI), как именно IIS решает, какой сертификат обслуживать (первая привязка 443 к IP? Или последний использовался?)
Кроме того, если эта настройка работает, в будущем, если я добавлю example.org на тот же сервер IIS и использую другой сертификат SSL, могу ли я включить SNI только для example.org и не влиять на остальные 3 сайта?
Технически говоря, нет, SNI не требуется, потому что все ваши веб-сайты имеют один и тот же сертификат. IIS - это достаточно умный (кажется, по крайней мере) различать веб-сайты, использующие Host:
Заголовок HTTP на клиентах без SNI (и, возможно, даже на клиентах с поддержкой SNI), поэтому все работает должным образом.
Для «приоритета» сертификата вы можете увидеть, какой сертификат используется при выдаче netsh http show sslcert
, а сертификат по умолчанию (для клиента без SNI) можно выбрать, отключив Require Server Name Indication
вариант для этого конкретного веб-сайта (на привязки веб-сайтов окно настроек). Больше информации здесь: https://stackoverflow.com/questions/19565961/default-certificate-for-sni-server-name-indication
Это также должно ответить на ваш третий вопрос: если вы добавите еще один веб-сайт с SNI, на существующих веб-сайтах не будет никаких изменений (конечно, с использованием другого домена и другого сертификата, example.org
будет доступен только для клиентов с поддержкой SNI)
Как показывает практика, на уровне HTTP API
Такие сопоставления можно визуально проанализировать с помощью Jexus Manager.
Когда начинается квитирование SSL / TLS, сопоставления SNI будут сканироваться в первую очередь на соответствие имени хоста в запросе (из браузеров, поддерживающих SNI). Если сопоставление SNI не соответствует, выполняется сканирование сопоставления на основе IP. Это порядок разрешения.
Сопоставления создаются и обновляются при настройке сайтов в диспетчере IIS. Однако такие сопоставления в HTTP API отделены от конфигурации IIS. Они могут существовать, даже если сайты в IIS удалены.
В вашем случае, поскольку у вас есть только подстановочный сертификат, настройка нескольких сайтов в диспетчере IIS не будет перезаписывать сопоставление на основе IP и должна работать безупречно.
Однако, когда вы пытаетесь настроить второй домен с другим сертификатом, вы не можете использовать тот же IP-адрес (поскольку это сопоставление IP: 443 уже существует). Если вы принудительно настроите это в диспетчере IIS, предыдущий сертификат должен быть перезаписан. Конечно, тогда можно использовать отображение SNI.