2

Ich habe TLS 1.0 deaktiviert. Daher versuchen wir, TLS 1.2 in unserer .Net-Anwendung zu verwenden, die .Net Framework 4.0 verwendet.Problem, TLS 1.2 in .NET Framework 4.0 zu verwenden

Ich habe den Code für diese zu Beginn hinzugefügt

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 

Es funktioniert perfekt auf meinem lokalen System.

Aber ich bin mir nicht sicher, warum es nicht funktioniert, wenn ich den Code auf dem Server (Windows Server 2008 R2) bereitstellen. Ich habe alles überprüft. .Net-Framework ist auf dem Server vorhanden. Aber es gibt immer noch das gleiche Problem auf dem Server.

Gibt es etwas, das ich hier vermisse?

+0

Mögliche Duplikat [Default SecurityProtocol in .NET 4.5] (http://stackoverflow.com/questions/28286086/default-securityprotocol-in-net-4-5) – VMAtm

Antwort

3

Nach this post:

.NET 4.0 unterstützt bis zu TLS 1.0, während .NET 4.5 up unterstützt bis zu TLS 1.2

jedoch eine Anwendung .NET 4.0 Targeting noch unterstützen bis zu TLS 1.2 wenn .NET 4.5 in installiert ist die gleiche Umgebung. .NET 4.5 wird über .NET 4.0 installiert und ersetzt System.dll.

Also im Grunde müssen Sie Ihren Server .Net 4.5 aktualisieren TLS 1.2 zu ermöglichen.

Auch können Sie Ihren Code vereinfachen und machen es besser lesbar:

using System.Net; 

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

Verwandte MSDN-Artikel:

+0

Bedeutet das, wenn ich eine WinForms-Anwendung habe und TLS 1.2-Unterstützung für SOAP-Anfragen benötige, dass ich sie in .NET 4.5 ändern muss und sicherstellen muss, dass alle Benutzer dieses Framework installiert haben? – NickG

+0

Ja, auf andere Weise wird es nicht funktionieren. Wenn Sie dies tun können: 'ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls', das mag einen Trick machen, wird aber wahrscheinlich trotzdem abstürzen, wenn Sie sagen, dass Sie 'TLS 1.0' deaktiviert bekommen haben. – VMAtm

+0

SecurityProtocolType.Tls12 existiert nicht einmal in .NET 4.0, aber ich kann den int verwenden. Es scheint jedoch, dass es keine Möglichkeit gibt, .NET 4.5 zu installieren. – NickG

0

Wenn Sie T verwenden möchten LS 1.2 in bestehende .NET-4.x-Code ohne Änderungen am Anwendungscode, müssen Sie die folgenden Schritte aus:

  1. .NET Framework 4.6 installieren oder höher. Dies ist erforderlich, um TLS 1.2 standardmäßig als Protokoll in Kombination mit den richtigen Windows-Registrierungsschlüsseln zu verwenden.

  2. Stellen Sie die folgenden .NET Framework strong cryptography registry keys:

Auf 32-Bit und 64-Bit-Versionen von Windows: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

Auf 64-Bit-Versionen von Windows: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

Die WOW6432Node Der Wert wird von 32-Bit-Anwendungen verwendet, wenn er auf einem 64-Bit-System ausgeführt wird.

Weitere Informationen finden Sie unter: https://github.com/TheLevelUp/pos-tls-patcher