Какие компоненты HTTP-запроса шифруются при использовании HTTPS?

Ответ

При использовании протокола HTTPS (HTTP Secure) шифруется практически весь HTTP-запрос. TLS-шифрование применяется ко всему пакету данных HTTP после установления безопасного соединения.

Шифрованию подвергаются:

  • Стартовая строка (Start-line): метод (GET, POST), запрашиваемый путь (/users?id=123) и версия протокола (HTTP/1.1).
  • Заголовки (Headers): все заголовки, включая Host, User-Agent, Accept, Authorization и, что особенно важно, Cookie.
  • Тело запроса (Body): все данные, передаваемые в теле, например, JSON в POST-запросе.

Важное исключение: Доменное имя в SNI

Единственная критически важная часть, которая передается в открытом виде до установления шифрования — это имя хоста в расширении SNI (Server Name Indication) во время TLS-рукопожатия (handshake).

  • Зачем это нужно? Это позволяет серверу, который обслуживает множество сайтов на одном IP-адресе, понять, какой именно SSL/TLS-сертификат ему нужно предоставить клиенту.
  • Что это значит на практике? Сетевой наблюдатель (например, интернет-провайдер) может видеть, к какому домену (example.com) вы подключаетесь, но не видит полный URL (/private/data), заголовки или содержимое вашего запроса.

Итог: Шифруется всё, что находится внутри HTTP-сообщения. Информация, необходимая для маршрутизации и установления самого зашифрованного канала (как имя хоста в SNI), остается видимой.