Heim > Backend-Entwicklung > C++ > Wie kann ich die ausgehandelte TLS-Version in .NET ermitteln?

Wie kann ich die ausgehandelte TLS-Version in .NET ermitteln?

Susan Sarandon
Freigeben: 2025-01-10 09:14:42
Original
875 Leute haben es durchsucht

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

Bestimmen der ausgehandelten TLS-Version in .NET-Anwendungen

.NET 4.7 verwendet standardmäßig TLS 1.2 für HTTP-Anfragen; Die tatsächlich beim Verbindungsaufbau verwendete TLS-Version kann jedoch variieren. In diesem Leitfaden werden zwei Methoden zur Bestimmung der ausgehandelten TLS-Version beschrieben.

Methode 1: Reflexion

Diese Technik nutzt Reflektion, um auf interne Eigenschaften und Felder zuzugreifen und die SSL-Protokollversion zu erhalten. Beachten Sie, dass dies von internen APIs abhängt und sich mit zukünftigen .NET-Updates ändern kann.

<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>
Nach dem Login kopieren

Methode 2: Kontextattribute für sichere Verbindungen (erweitert)

Diese Methode greift über die secur32.dll-Bibliothek auf Verbindungskontextattribute zu. Bei diesem Ansatz wird mit nicht öffentlichen Handles und Strukturen gearbeitet, was ihn weniger portierbar und potenziell komplexer macht. (Eine detaillierte Implementierung wurde aufgrund der Komplexität und potenziellen Instabilität weggelassen.)

Wichtige Überlegungen:

  • .NET-Version: TLS 1.3-Unterstützung erfordert .NET Framework 4.8 oder höher oder .NET Core 3.0.
  • RemoteCertificateValidationCallback: Dieser Rückruf bietet Einblicke in die verwendeten Sicherheitsprotokolle und hilft bei der Identifizierung der TLS-Version.
  • TcpClient: Die Verwendung von TcpClient ermöglicht das Abrufen von TLS-Informationen vor WebRequest der Initialisierung und ermöglicht so eine proaktive TLS-Versionsbestimmung.

Diese Informationen helfen Entwicklern, die von ihren .NET-Anwendungen verwendeten Sicherheitsprotokolle zu verstehen und zu verwalten. Denken Sie daran, die Auswirkungen und potenziellen Risiken, die mit der Verwendung von Reflektion und der Interaktion mit nicht verwalteten Bibliotheken verbunden sind, sorgfältig abzuwägen.

Das obige ist der detaillierte Inhalt vonWie kann ich die ausgehandelte TLS-Version in .NET ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage