.net fiddler wireshark packet-sniffers tls1.2

Cómo probar qué versión de TLS usa mi cliente.Net



fiddler wireshark (3)

Apoyo un sitio .NET que (entre muchas, MUCHAS cosas) habla con API remotas de sistemas de proveedores.

Queremos actualizar para admitir TLS 1.2. Esperamos hacerlo según esta pregunta: ¿Hay implementación .NET de TLS 1.2?

Pero, ¿cómo puedo comprobar que esto realmente funciona una vez que realizo el cambio?

Lo ideal sería que uno de mis sitios de proveedores comenzara a usar TLS 1.2 SOLAMENTE y luego mi prueba podría ser "¿podemos hablar con ese proveedor ahora?" Pero no tenemos eso. Supongo que puedo hacer algo con un rastreador de paquetes de algún tipo, pero no sabría exactamente lo que estaba buscando, ni cómo configurar el rastreador para recopilar los datos necesarios de manera legible.

Ya sea:

  • ¿Alguien puede indicarme una guía completa sobre cómo recopilar esos datos en Fiddler / WireShark?

O

  • Alguien puede aconsejar una forma alternativa de probar que el cambio ha funcionado.

El rastreo de System.Net incluye detalles suficientes para verificar esto, aunque no es muy accesible.

Esta KB describe cómo activar el rastreo de System.Net.

Esta publicación de blog muestra una solicitud completa de HTTPS en el rastreo de System.Net .

Los bytes enviados a través del cable se registran, y en el ejemplo dado en esa publicación del blog, la secuencia del cliente comienza:

System.Net.Sockets Verbose: 0 : [3848] Data from Socket#48285313::Send System.Net.Sockets Verbose: 0 : [3848] 00000000 : 16 03 00 00 41 01 00 00-3D 03 00 43 26 02 90 83 : ....A...=..C&...

RFC5246 describe TLS 1.2 y explica que ClientHello es el primer mensaje esperado y declara su formato :

struct { ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher_suites<2..2^16-2>; CompressionMethod compression_methods<1..2^8-1>; select (extensions_present) { case false: struct {}; case true: Extension extensions<0..2^16-1>; }; } ClientHello;

Esta respuesta SO explica que el registro comienza con 0x16 como un marcador de tipo, luego la versión del protocolo.

La sesión que se muestra arriba tiene la versión 3.0, lo que significa SSL 3.0 .

El RFC explica que 3.3 es TLS 1.2.

Entonces, si los datos de su cliente comienzan con " 16 03 03 ", entonces su cliente está intentando negociar TLS 1.2.

Es posible que deba examinar ServerHello para establecer qué versión se utilizó realmente.



Si captura la creación de conexión en Wireshark y examina el primer paquete desde el cliente, Wireshark ClientHello los campos en la estructura ClientHello por usted, incluida la versión TLS solicitada por el cliente.

De forma similar, si observa el primer paquete de respuesta del servidor, Wireshark ServerHello los campos en la estructura ServerHello por usted, incluida la versión TLS establecida para la conexión.

Vea esta publicación de blog o esta para ejemplos trabajados.