Так как никто не обеспечил захват провода, вот один.
Имя сервера (доменная часть URL-адреса) представлено в ClientHello
пакете в виде простого текста .
Ниже показан запрос браузера:
https://i.stack.imgur.com/path/?some=parameters&go=here
См. Этот ответ для более подробной информации о полях версий TLS (их 3, а не версии, каждый из которых содержит номер версии!)
От https://www.ietf.org/rfc/rfc3546.txt :
3.1. Указание имени сервера
[TLS] не предоставляет клиенту механизм, позволяющий сообщать серверу имя сервера, с которым он связывается. Клиентам может быть желательно предоставить эту информацию для облегчения безопасных соединений с серверами, на которых размещено несколько «виртуальных» серверов по одному базовому сетевому адресу.
Чтобы предоставить имя сервера, клиенты МОГУТ включить расширение типа «имя_сервера» в (расширенный) клиент hello.
Короче говоря:
FQDN (доменная часть URL-адреса) МОЖЕТ быть передано в открытом виде внутриClientHello
пакета , если используется расширение SNI
Остальная часть URL ( /path/?some=parameters&go=here
) не имеет делового характера, ClientHello
поскольку URL-адрес запроса является HTTP-компонентом (уровень 7 OSI), поэтому он никогда не будет отображаться при подтверждении связи TLS (уровень 4 или 5). Это будет позже в GET /path/?some=parameters&go=here HTTP/1.1
HTTP-запросе, ПОСЛЕ установления безопасного канала TLS.
УПРАВЛЯЮЩЕЕ РЕЗЮМЕ
Доменное имя МОЖЕТ быть передано в открытом виде (если расширение SNI используется в рукопожатии TLS), но URL (путь и параметры) всегда шифруются.
МАРТ 2019 ОБНОВЛЕНИЕ
Спасибо carlin.scott за то, что поднял этот вопрос.
Полезная нагрузка в расширении SNI теперь может быть зашифрована с помощью этого проекта предложения RFC . Эта возможность существует только в TLS 1.3 (как опция, и ее реализация возможна обоими сторонами), и обратной совместимости с TLS 1.2 и ниже не существует.
CloudFlare делает это, и вы можете прочитать больше о внутренностях здесь -
Если курица должна быть раньше яйца, куда вы положите курицу?
На практике это означает, что вместо передачи полного доменного имени в виде простого текста (как показано в захвате Wireshark) теперь оно шифруется.
ПРИМЕЧАНИЕ. Это касается аспекта конфиденциальности в большей степени, чем аспект безопасности, поскольку обратный поиск DNS МОЖЕТ в любом случае выявить целевой узел назначения.