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

Wie kann ich die ausgehandelte TLS-Version in einer .NET 4.7-HTTP-Anfrage ermitteln?

Mary-Kate Olsen
Freigeben: 2025-01-10 08:55:45
Original
434 Leute haben es durchsucht

How Can I Determine the Negotiated TLS Version in a .NET 4.7 HTTP Request?

Wie ermittelt man die ausgehandelte TLS-Version?

Die Bestimmung der während einer Webanfrage ausgehandelten TLS-Version kann wertvolle Erkenntnisse für Debugging- und Protokollierungszwecke liefern.

.NET 4.7 verwendet standardmäßig TLS 1.2 für HTTP-Anfragen. Allerdings ist es oft notwendig, die konkrete TLS-Version zu ermitteln, die während der Verbindung tatsächlich aufgebaut wurde.

In diesem Artikel werden verschiedene Techniken zum Extrahieren dieser Informationen aus dem von HttpWebRequest.GetRequestStream() oder HttpWebRequest.GetResponseStream() zurückgegebenen Stream untersucht.

Reflexionsmethode

Mithilfe der Reflexion können wir auf den Eigenschaftswert TlsStream->SslState->SslProtocol zugreifen. Diese Methode funktioniert sowohl für komprimierte als auch für unkomprimierte Streams. Darüber hinaus erfolgt die Validierung, wenn die Anforderung mit request.GetRequestStream() initialisiert wird.

TcpClient-Alternative

Erwägen Sie die Verwendung von TcpClient(), wenn es wichtig ist, Protokollinformationen vor der Initialisierung der WebRequest abzurufen. Indem Sie die Verbindung mit denselben Einstellungen wie WebRequest (unterstützte Protokolle und Zertifikatsüberprüfung) herstellen, können Sie das TLS-Protokoll bestimmen, das mit dem Zielserver ausgehandelt wird.

Secur32.dll-Aufruf

Mit der Methode

secur32.dll -> kann der Verbindungssicherheitskontext eines initialisierten Streams abgefragt werden. Das erforderliche Kontexthandle ist jedoch nicht öffentlich und kann nur über Reflection oder die Klasse QueryContextAttributesW() aufgerufen werden. Leider sind diese Klassen nicht mit den von WebRequest/WebResponse zurückgegebenen Streams kompatibel. AuthenticatedStream

Dekompressionsströmungsinspektion

Wenn die Anfrage einen Stream zurückgibt, der dekomprimiert wurde (z. B. GZIP oder Deflate), muss das zugrunde liegende

extrahiert werden, bevor mit der oben genannten Methode fortgefahren werden kann. TlsStream

Das obige ist der detaillierte Inhalt vonWie kann ich die ausgehandelte TLS-Version in einer .NET 4.7-HTTP-Anfrage 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