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