"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je déterminer la version TLS négociée dans .NET?

Comment puis-je déterminer la version TLS négociée dans .NET?

Publié le 2025-03-22
Parcourir:410

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

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:

  • . Version nette: TLS 1.3 La prise en charge nécessite .net Framework 4.8 ou ultérieure, ou .net Core 3.0.
  • 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.

Dernier tutoriel Plus>

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