Рейтинг:0

Сертификат SNI и заголовок хоста IIS

флаг cn

Контекст: веб-сайт IIS с настроенным заголовком имени хоста и сертификатом TLS.

Когда клиент инициирует подключение к указанному сайту, это правильный поток?

  • Клиент (браузер) выполняет поиск DNS
  • Установлено TCP-соединение с сервером
  • Клиент (браузер) создает полезную нагрузку TLS, включающую SNI, который является именем сайта, и начинает рукопожатие с сервером.
  • Сервер ищет сертификат с указанным именем в списке сертификатов привязки сайта и отвечает
  • После установки TLS веб-сервер IIS направляет HTTP-запрос на конкретный сайт, используя значение заголовка HOST.

Насколько я понимаю, SNI является базовой информацией для поиска сервером сертификата сайта.

Что произойдет, если после рукопожатия TLS я действительно изменю заголовок HTTP-узла, чтобы настроить таргетинг на другой веб-сайт? Это возможно ?

Lex Li avatar
флаг vn
«На самом деле я изменяю заголовок узла HTTP, чтобы настроить таргетинг на другой веб-сайт» — это недостаточно ясно. Спросите себя, где вы можете изменить заголовок хоста, и тогда вы должны увидеть реальную возможность. Обычно вы можете изменить этот заголовок только на стороне браузера, затем вы теряете контроль, поскольку браузер берет его на себя и инициализирует другое соединение TLS с другим сайтом.
Рейтинг:0
флаг cz

RFC 6066, раздел 11.1 говорит, в частности:

Поскольку клиент может представить другой имя_сервера в протоколе приложения, сервер приложения реализации, которые полагаются на то, что эти имена одинаковы, ДОЛЖНЫ проверьте, не указал ли клиент другое имя в протокол приложения.

Как на самом деле это делают веб-серверы, может различаться. Apache и nginx полностью отвергают такие соединения, хотя, как ни странно, у Apache есть возможность отключить это. Не знаю, что делает IIS, но, надеюсь, в здравом уме. Вы можете легко проверить это самостоятельно.

флаг br
Предложение «полагаться на то, что эти имена одинаковы» делает здесь большую работу. Достаточно полностью игнорировать имя из SNI и обрабатывать только заголовок `Host:`, чтобы получить соответствующую реализацию, и я ожидаю, что это норма для выделенных шлюзов TLS, где соединение TLS даже не достигает сервера.
Michael Hampton avatar
флаг cz
@SimonRichter Помимо проблем с безопасностью, в этом сценарии HTTP/2 ломается различными и тонкими способами.
флаг br
Единственная проблема безопасности заключается в том, что если вы используете SNI для распределения трафика между несколькими машинами, вы можете отправить запрос на машину, на которой не настроено это конкретное имя хоста, что представляет собой довольно низкую угрозу (но наиболее раздражающую для защиты). . Если та же машина завершает TLS и обрабатывает запрос, отбрасывание имени из SNI не подвергает никакой дополнительной поверхности атаки — все, что вы можете сделать, это связаться с хостом, с которым вы также могли бы поговорить, используя правильное имя в SNI.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.