Ich habe einen Windows Server 2008 R2-Server, auf dem ein Dutzend .NET Framework 4.0-WebForms-Anwendungen ausgeführt werden, und ich muss TLS 1.0 und niedriger deaktivieren. Wenn ich das mache, schlagen alle sicheren Verbindungen fehl und ich musste TLS 1.0 wieder aktivieren. Gibt es eine Möglichkeit, TLS 1.2 in einer Framework 4.0-Umgebung zu verwenden? Vielleicht fehlt mir etwas?
Aufgrund von Einschränkungen der von uns verwendeten CMS-Version können wir das Framework derzeit nicht aktualisieren.
quelle
SecurityProtocolType
kein Mitglied vorhanden istTls12
.ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072;
Dies funktioniert in 4.0, obwohl möglicherweise Ihre Laufzeit vollständig gepatcht / aktualisiert werden muss.Wenn Sie der
system.net
Klassenbibliothek keine Eigenschaft hinzufügen können .Dann fügen Sie in Global.asax - Datei:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2 ServicePointManager.SecurityProtocol = (SecurityProtocolType)768; //TLS 1.1
Und Sie können es in einer Funktion an der Startzeile verwenden:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
Und es ist nützlich für das
STRIPE
Zahlungsgateway, das nur TLS 1.1 und TLS 1.2 unterstützt.BEARBEITEN: Nachdem so viele Fragen zu .NET 4.5 auf meinem Server installiert sind oder nicht ... hier ist der Screenshot von
Registry
auf meinem Produktionsserver:Ich habe nur .NET Framework 4.0 installiert.
quelle
ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType) 'TLS 1.2
Nehmen Sie die folgenden Änderungen in Ihrer Registrierung vor und es sollte funktionieren:
1.) Starke Kryptografie- Registrierungsschlüssel für .NET Framework
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
2.) TLS 1.2- Registrierungsschlüssel für Secure Channel (Schannel)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
quelle
Nach dieser , müssen Sie .NET 4.5 installiert. Weitere Informationen finden Sie auf der Webseite. Das Wesentliche dabei ist, dass Ihre 4.0-Apps nach der Installation von .NET 4.5 die 4.5 System.dll verwenden. Sie können TLS 1.2 auf zwei Arten aktivieren:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319: SchUseStrongCrypto
aufDWORD 1
quelle
Ich habe in VB codiert und konnte meiner Datei Global.asax.vb in Application_Start die folgende Zeile hinzufügen
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) 'TLS 1.2
quelle
Es gibt zwei mögliche Szenarien:
Wenn Ihre Anwendung auf .net Framework 4.5 oder weniger ausgeführt wird und Sie problemlos neuen Code für die Produktion bereitstellen können, können Sie die folgende Lösung verwenden.
Sie können die folgende Codezeile hinzufügen, bevor Sie den API-Aufruf ausführen.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // .NET 4.5 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; // .NET 4.0
Wenn Sie keinen neuen Code bereitstellen können und das Problem mit demselben Code beheben möchten, der in der Produktion vorhanden ist, haben Sie zwei Möglichkeiten.
Option 1 :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
Erstellen Sie dann eine Datei mit der Erweiterung
.reg
und installieren Sie sie.Hinweis: Diese Einstellung gilt auf Registrierungsebene und gilt für alle auf diesem Computer vorhandenen Anwendungen. Wenn Sie sich auf nur eine Anwendung beschränken möchten, können Sie sie verwenden
Option 2
Option 2 : Dies kann durch Ändern einiger Konfigurationseinstellungen in der Konfigurationsdatei erfolgen. Sie können entweder in Ihrer Konfigurationsdatei hinzufügen.
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false"/> </runtime>
oder
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false" </runtime>
quelle
Ich treffe das gleiche Problem auf einem Windows installierten .NET Framework 4.0.
Und ich habe dieses Problem durch die Installation von .NET Framework 4.6.2 gelöst .
Oder Sie können das neueste Paket herunterladen , um es auszuprobieren.
quelle