Como ninguém forneceu uma captura por fio, aqui está uma.
O nome do servidor (a parte do domínio da URL) é apresentado no ClientHello
pacote, em texto sem formatação .
A seguir, é exibida uma solicitação do navegador para:
https://i.stack.imgur.com/path/?some=parameters&go=here
Consulte esta resposta para obter mais informações sobre os campos de versão do TLS (existem três deles - não versões, campos que contêm um número de versão!)
Em https://www.ietf.org/rfc/rfc3546.txt :
3.1 Indicação do nome do servidor
O [TLS] não fornece um mecanismo para um cliente informar ao servidor o nome do servidor que está entrando em contato. Pode ser desejável que os clientes forneçam essas informações para facilitar conexões seguras a servidores que hospedam vários servidores 'virtuais' em um único endereço de rede subjacente.
A fim de fornecer o nome do servidor, os clientes podem incluir uma extensão do tipo "server_name" no (estendido) cliente Olá.
Em resumo:
O FQDN (parte do domínio da URL) PODE ser transmitido de forma clara dentro do ClientHello
pacote se a extensão SNI for usada
O restante da URL ( /path/?some=parameters&go=here
) não tem negócios, ClientHello
pois a URL de solicitação é uma coisa HTTP (OSI Layer 7); portanto, nunca será exibida em um handshake TLS (Layer 4 ou 5). Isso virá posteriormente em uma GET /path/?some=parameters&go=here HTTP/1.1
solicitação HTTP, APÓS o canal TLS seguro ser estabelecido.
SUMÁRIO EXECUTIVO
O nome de domínio PODE ser transmitido de forma clara (se a extensão SNI for usada no handshake TLS), mas o URL (caminho e parâmetros) é sempre criptografado.
ATUALIZAÇÃO DE MARÇO DE 2019
Obrigado carlin.scott por trazer este aqui.
A carga útil na extensão SNI agora pode ser criptografada por meio desta proposta preliminar de RFC . Esse recurso existe apenas no TLS 1.3 (como uma opção e cabe aos dois lados implementá-lo) e não há compatibilidade com o TLS 1.2 e versões anteriores.
O CloudFlare está fazendo isso e você pode ler mais sobre os internos aqui -
Se o frango deve vir antes do ovo, onde você coloca o frango?
Na prática, isso significa que, em vez de transmitir o FQDN em texto sem formatação (como mostra a captura do Wireshark), ele agora está criptografado.
NOTA: Isso aborda o aspecto de privacidade mais do que o de segurança, uma vez que uma pesquisa reversa no DNS PODE revelar o host de destino desejado.