Estoy estudiando el protocolo SSL / TLS, más específicamente su protocolo de enlace. Sé que inicialmente, un cliente envía un mensaje Cliente Hola al servidor que incluye la versión TLS compatible con el cliente.
Tengo una aplicación que usa conexiones HTTPS, implementada con WinHTTP en el cliente y Apache Java en el servidor. Estoy rastreando el tráfico HTTPS con Wireshark , que tiene este aspecto:
Client Hello, version-TLS 1.2
Server Hello, version-TLS 1.2
Client Key Exchange, version-TLS 1.2
Client Cipher spec, version-TLS 1.2
Application data, version-TLS 1.2
Encrypted alert version-TLS 1.2 [from client]
FIN version-TLS 1.2
ACK version-TLS 1.2
No sé lo que significa Encrypted alert
(en Wireshark se muestra como Encrypt alert (21)
): dado que el cliente lo envía, asumo que es una alerta de Cerrar notificación .
Unos segundos después de que se cierre la sesión inicial, se inicia una nueva sesión de la siguiente manera:
Client Hello, version-TLS 1.0
Server Hello, version-TLS 1.0
Client Key Exchange, version-TLS 1.0
Client Cipher spec, version-TLS 1.0
Application data, version-TLS 1.0
Encrypted alert version-TLS 1.0 [from client]
FIN version-TLS 1.0
ACK version-TLS 1.0
A partir de esto, concluyo los cambios de versión, y así el cifrado.
Esto no parece suceder siempre: a veces, una nueva sesión utilizará TLS 1.2, a veces recurre a TLS 1.0. ¿Cuál es la razón de esto?