Déterminer la version TLS négociée dans .NET Applications
. Net 4.7 par défaut est TLS 1.2 pour les demandes http; Cependant, la version TLS réelle utilisée pendant l'établissement de connexion peut varier. Ce guide décrit deux méthodes pour déterminer la version TLS négociée.
Méthode 1: réflexion
Cette technique exploite la réflexion pour accéder aux propriétés et champs internes pour obtenir la version du protocole SSL. Notez que cela repose sur des API internes et pourrait changer avec les futures mises à jour .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éthode 2: Attributs de contexte de connexion sécurisé (Advanced)
Cette méthode accède aux attributs de contexte de connexion via la bibliothèque Secur32.dll
. Cette approche consiste à travailler avec des poignées et des structures non publiques, ce qui le rend moins portable et potentiellement plus complexe. (Implémentation détaillée omise en raison de la complexité et de l'instabilité potentielle.)
Considérations importantes:
RemoteCertificateValidationCallback
: Ce rappel offre des informations sur les protocoles de sécurité utilisés, aidant dans l'identification de la version TLS. tcpClient
: Utilisation de tcpClient
permet de récupérer les informations TLS avant webrequest
Initialisation, activer la version TLS proactive. Ces informations aident les développeurs à comprendre et à gérer les protocoles de sécurité utilisés par leurs applications .NET. N'oubliez pas de considérer attentivement les implications et les risques potentiels associés à l'utilisation de la réflexion et de l'interaction avec les bibliothèques non gérées.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3