У меня есть один веб-сайт IIS, на котором размещены 3 разных веб-сайта, использующих один и тот же сертификат UCC SSL. (Код моего сайта проверяет сам заголовок хоста, чтобы решить, какой вариант сайта показывать).
Я уже исправил самую фатальную ошибку для моих пользователей Internet Explorer в XP, которая заключалась в отключении поля «Требовать указание имени субъекта» в IIS. Поскольку SNI не поддерживается в Windows XP если бы он был включен, когда пользователь XP переключился на HTTPS, его бы просто выгнали с сайта без предупреждения (не говорите моему боссу).
Поэтому я полностью понимаю, что когда пользователь получает доступ к любому из 3 сайтов через HTTPS, которые все имеют один и тот же IP-адрес, он отправляется на тот же сайт IIS и обслуживает сертификат UCC. Даже XP поддерживает сертификаты UCC / SAN, поэтому клиент принимает сертификат и показывает сайт, как ожидалось.
А теперь ... забудьте обо всем этом и рассмотрите второй негипотетический сценарий.
cats.com
и dogs.com
Теперь рассмотрим, что пользователи XP получают доступ https://cats.com
Вот как я понимаю, как все работает:
1.2.3.4
cats.com
чего вы ожидаете. Так что это нормально.https://dogs.com
- разве вам не нужно обслуживать сайт за cats.com
потому что SSL на XP не знает о SNI для SSL-соединений и в любом случае он отключен в IIS?Ну, ты не знаешь. Вы попадаете на сайт dogs.com. Я пробовал это, и cats.com
и dogs.com
оба работают с клиентом Windows XP Internet Explorer 8.
Я просто не понимаю, почему это работает. Я ожидал такого поведения только в моем первом сценарии, когда все они используют одно приложение IIS.
Я предполагаю, что IIS 8 все равно получает заголовок хоста и достаточно умен, чтобы направить его на правильный веб-сайт и найти имя сертификата UCC. Это то, что происходит?
Может кто-нибудь объяснить дальше?
* просто чтобы нарочно раздражать технически мыслящих владельцев кошек и собак ;-)
IIS использует заголовок HTTP Host: для определения того, какой веб-сайт обслуживать, как и в случае любого другого запроса.