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:
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.
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