"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo determinar la versión TLS negociada en .NET?

¿Cómo puedo determinar la versión TLS negociada en .NET?

Publicado el 2025-03-22
Navegar:887

How Can I Determine the Negotiated TLS Version in .NET?

determinando la versión TLS negociada en aplicaciones .NET

. NET 4.7 predeterminado a TLS 1.2 para solicitudes HTTP; Sin embargo, la versión TLS real utilizada durante el establecimiento de conexión puede variar. Esta guía describe dos métodos para determinar la versión TLS negociada.

método 1: reflexión

Esta técnica aprovecha la reflexión para acceder a propiedades y campos internos para obtener la versión del protocolo SSL. Tenga en cuenta que esto se basa en API internas y podría cambiar con futuras actualizaciones de .NET.

using System.IO.Compression;
using System.Net;
using System.Net.Security;
using System.Reflection;
using System.Security.Authentication;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

// ... other code ...

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | 
                                       SecurityProtocolType.Tls11 | 
                                       SecurityProtocolType.Tls12 | 
                                       SecurityProtocolType.Tls13;

// ... other code ...

Uri requestUri = new Uri("https://somesite.com");
var request = WebRequest.CreateHttp(requestUri);

// ... other code ...

using (var requestStream = request.GetRequestStream()) {
    // Request stream validated; now extract SSL protocol
    SslProtocols sslProtocol = ExtractSslProtocol(requestStream);
    if (sslProtocol != SslProtocols.None) {
        // Process the sslProtocol value
    }
}

// ... ExtractSslProtocol function (implementation would be provided here) ...

Método 2: Atributos de contexto de conexión de conexión (avanzado)

Este método accede a los atributos de contexto de conexión a través de la biblioteca secur32.dll . Este enfoque implica trabajar con mangos y estructuras no públicas, lo que lo hace menos portátil y potencialmente más complejo. (Implementación detallada omitida debido a la complejidad e inestabilidad potencial.)

consideraciones importantes:

  • . Versión neta: TLS 1.3 Soporte requiere .NET Framework 4.8 o posterior, o .Net Core 3.0.
  • remotecertificateValidationCallback : Esta devolución de llamada ofrece información sobre los protocolos de seguridad empleados, ayudando en la identificación de la versión TLS.
  • tcpclient : usando tcpclient permite recuperar la información de tls antes webRequest inicialización, habilitando la determinación de la versión TLS proactiva.
  • ]

Esta información ayuda a los desarrolladores a comprender y administrar los protocolos de seguridad utilizados por sus aplicaciones .NET. Recuerde considerar cuidadosamente las implicaciones y los riesgos potenciales asociados con el uso de la reflexión e interactuar con bibliotecas no administradas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3