Maison >développement back-end >C++ >Comment puis-je déterminer la version TLS négociée dans .NET ?
Détermination de la version TLS négociée dans les applications .NET
.NET 4.7 est par défaut TLS 1.2 pour les requêtes HTTP ; cependant, la version réelle de TLS utilisée lors de l'établissement de la connexion peut varier. Ce guide présente 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 afin d'obtenir la version du protocole SSL. Notez que cela repose sur des API internes et pourrait changer avec les futures mises à jour de .NET.
<code class="language-csharp">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) ...</code>
Méthode 2 : Attributs de contexte de connexion sécurisée (avancé)
Cette méthode accède aux attributs du contexte de connexion via la bibliothèque secur32.dll
. Cette approche implique de travailler avec des descripteurs et des structures non publics, ce qui la rend moins portable et potentiellement plus complexe. (Mise en œuvre détaillée omise en raison de la complexité et de l'instabilité potentielle.)
Considérations importantes :
RemoteCertificateValidationCallback
: Ce rappel offre un aperçu des protocoles de sécurité utilisés, facilitant l'identification de la version TLS.TcpClient
: L'utilisation de TcpClient
permet de récupérer les informations TLS avant WebRequest
l'initialisation, permettant une détermination proactive de la version TLS.Ces informations aident les développeurs à comprendre et à gérer les protocoles de sécurité utilisés par leurs applications .NET. N'oubliez pas d'examiner attentivement les implications et les risques potentiels associés à l'utilisation de la réflexion et à l'interaction avec des bibliothèques non gérées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!