2016-06-16 5 views
12

Meine Anwendung verbindet sich mit Experian Server und Experian wird bald aufhören zu unterstützen TLS 1.0 und TLS 1.1. Alle Verbindungen, die HTTPS verwenden, müssen TLS Version 1.2 verwenden.Ist das möglich, senden Sie HttpWebRequest mit TLS1.2 auf .NET 4.0 Framework

Ich möchte zu diesem Thema etwas Forschung zu tun und sehen HttpWebRequest mit TLS 1.2 auf .NET 4.0 framework arbeitet

Senden Wenn dies nicht der Fall, ich werde wahrscheinlich eine webservice auf .NET 4.5 und rufen ihre Methoden erstellen müssen, wenn es funktioniert, Ich muss nichts tun.

Hat schon jemand mit diesem Problem konfrontiert?

Antwort

25

Ja, es wird unterstützt, aber Sie müssen die TLS-Version explizit auf ServicePointManager setzen. Lassen Sie diesen Code jederzeit laufen (in der gleichen App-Domäne), bevor Sie den Anruf bei Experian tätigen:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 
+0

Ich versuche, diese Änderung zu implementieren, die Sie vorgeschlagen haben, und die einzigen 'SecurityProtocolType' Optionen, die ich' Ssl3' und 'Tls' habe. Es hat nicht 'Tls12' – gene

+0

Ich verwende das selbst, um experian zu benennen, also muss Tim Recht haben. Es ist nicht HttpRequest, das ist das Problem, es ist die Framework-Version. – Crowcoder

+0

Solange Sie nichts auf einer niedrigeren Framework-Ebene haben, die von diesem Code abhängig ist, können Sie einfach die Framework-Version erweitern und diese eine Codezeile hinzufügen. – Crowcoder

3

Leider nein, Sie können dies nicht tun. Tls12 wurde erst bei .netfx 4.5 hinzugefügt (siehe the documentation). Beachten Sie, dass auch Windows Server 2008 R2 + oder Windows 7+ ordnungsgemäß ausgeführt werden müssen (beachten Sie den Abschnitt Gilt für unter Introducing TLS).

14

Ich hatte mit dem gleichen Problem umgehen, während PayPal in eine Legacy-Anwendung zu integrieren und fand die folgende Abhilfe für .NET 4.0, die den Trick zu tun scheint:

ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 
ServicePointManager.DefaultConnectionLimit = 9999; 

Grundsätzlich ist die Abhilfe ist, direkt an Weisen Sie den Port für TLS 1.2 zu.

Der gesamte Kredit geht an den Kommentator bei CodeProject.

+0

Diese magische Linie hat den Trick 'ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072' Vielen Dank! –

Verwandte Themen