Como nadie proporcionó una captura de cable, aquí hay una.
El nombre del servidor (la parte del dominio de la URL) se presenta en el ClientHello
paquete, en texto sin formato .
A continuación se muestra una solicitud del navegador para:
https://i.stack.imgur.com/path/?some=parameters&go=here
Consulte esta respuesta para obtener más información sobre los campos de versión de TLS (hay 3 de ellos, ¡no versiones, campos que contienen un número de versión!)
Desde https://www.ietf.org/rfc/rfc3546.txt :
3.1. Indicación del nombre del servidor
[TLS] no proporciona un mecanismo para que un cliente le diga a un servidor el nombre del servidor al que está contactando. Puede ser deseable que los clientes proporcionen esta información para facilitar conexiones seguras a servidores que alojan múltiples servidores 'virtuales' en una sola dirección de red subyacente.
Para proporcionar el nombre del servidor, los clientes PUEDEN incluir una extensión de tipo "nombre_servidor" en el saludo del cliente (extendido).
En breve:
El FQDN (la parte del dominio de la URL) PUEDE transmitirse en claro dentro del ClientHello
paquete si se usa la extensión SNI
El resto de la URL ( /path/?some=parameters&go=here
) no tiene ClientHello
por qué estar dentro ya que la URL de solicitud es una cosa HTTP (OSI Layer 7), por lo tanto, nunca aparecerá en un protocolo de enlace TLS (Layer 4 o 5). Eso vendrá más adelante en una GET /path/?some=parameters&go=here HTTP/1.1
petición HTTP, después el seguro se establece canal TLS.
RESUMEN EJECUTIVO
El nombre de dominio PUEDE transmitirse en claro (si se usa la extensión SNI en el protocolo de enlace TLS) pero la URL (ruta y parámetros) siempre está encriptada.
ACTUALIZACIÓN MARZO 2019
Gracias carlin.scott por mencionar esto.
La carga útil en la extensión SNI ahora se puede cifrar a través de este borrador de propuesta de RFC . Esta capacidad solo existe en TLS 1.3 (como una opción y depende de ambos extremos implementarla) y no hay compatibilidad con TLS 1.2 y versiones anteriores.
CloudFlare lo está haciendo y puedes leer más sobre las partes internas aquí.
Si el pollo debe venir antes que el huevo, ¿dónde lo pones?
En la práctica, esto significa que en lugar de transmitir el FQDN en texto plano (como muestra la captura de Wireshark), ahora está encriptado.
NOTA: Esto aborda el aspecto de privacidad más que el de seguridad ya que una búsqueda inversa de DNS PUEDE revelar el host de destino previsto de todos modos.