Понимание пользователей 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: для определения того, какой веб-сайт следует обслуживать, как и для любого другого запроса.

Другие вопросы по тегам