TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Андрей Созыкин

3 Jun, 10:03

Открыть в Telegram Поделиться Пожаловаться

Что такое SNI или как ваш провайдер узнает, на какие сайты вы ходите?

В практиках по установке соединения TLS и по HTTPS мы использовали поле заголовка TLS Server Name Indication, сокращенно SNI. Давайте подробно рассмотрим, что это такое, зачем нужно и почему это поле важно.

При установке соединения TLS сервер должен выслать клиенту TLS-сертификат сервера в сообщении Server Hello. Но современные серверы на одном IP-адресе обслуживают несколько Web-сайтов. Например, сайт для практических занятий курса по сетям размещается на сервере GitHub Pages, где есть много других сайтов. Как серверу GitHub Pages узнать, что мы хотим подключиться именно к сайту networkscourse.ru?

В HTTP для решения этой задачи использовался заголовок Host, который вставлялся в первый запрос. Но при переходе на HTTPS мы сначала должны установить соединение TLS, и только после этого отправлять запрос HTTP с заголовком Host. А при установке соединения TLS сервер должен отправить клиенту сертификат сайта с нужным доменным именем, иначе клиент разорвет соединение.  

Именно для решения этой проблемы и было создано расширение TLS Server Name Indication (SNI). Его определили в RFC 3546 Transport Layer Security (TLS) Extensions. Поле SNI содержит доменное имя Web-сайта, к которому мы хотим подключиться. Клиент включает его в сообщение Client Hello при установке соединения. По значению SNI сервер выбирает нужный TLS-сертификат и отправляет клиенту.

Важная особенность в том, что доменное имя сайта передается в поле SNI в открытом виде. Соединение TLS в это время еще не установлено, поэтому зашифровать SNI нет возможности. В результате ваш провайдер знает, на какие сайты вы ходите по HTTPS 😊 (хотя сами передаваемые данные зашифрованы).

Поле SNI удобно использовать для фильтрации трафика HTTPS в Wireshark. Ранее в видео с практиками для подключения к https://networkscourse.ru мы просто перебирали четыре IP-адреса, на которых работает GitHub Pages. При использовании SNI это делать не обязательно: достаточно указать в фильтре имя, которое должно быть в поле SNI и Wireshark отберет нужные пакеты независимо от IP-адреса сервера. Пример фильтра: tls.handshake.extensions_server_name == "networkscourse.ru"
Установка соединения TLS в Wireshark | Компьютерные сети - 46
Практика по разбору процесса установки соединения TLS с помощью Wireshark. Как поддержать курс: - Boosty - https://boosty.to/asozykin - Cloudtips - https://pay.cloudtips.ru/p/45a4055b Заранее спасибо за помощь! Сайт курса - https://www.asozykin.ru/courses/networks_online Сайт для практических зан...

1.5k 0 21 3 33
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot