Nach dem Upgrade auf .NET Framework 4.6 kann keine Verbindung zu einem Server mithilfe der ServicePointManager- oder SslStream-APIs hergestellt werden
Symptome
Gehen Sie davon aus, dass Sie auf Ihrem Computer ein Upgrade auf Microsoft .NET Framework 4.6 durchgeführt haben. Wenn Sie eine Anwendung verwenden, die SSL 3.0 zusammen mit ServicePointManager- oder SslStream-APIs verwendet, um eine Verbindung zu einem Server herzustellen, schlägt die Verbindung fehl.
Ursache
Dieses Problem tritt auf, weil der Standardsatz von SSL/TLS-Protokollen, der von ServicePointManager und SslStream verwendet wird, geändert wurde.
Alter Wert: SSL 3.0 | Tls 1.0 | Tls 1.1
Neuer Wert: Tls 1.0 | Tls 1.1 | Tls 1.2
Problemumgehung
Um dieses Problem zu umgehen, aktualisieren Sie den Server auf Tls 1.0, Tls 1.1 oder Tls 1.2, da sich SSL 3.0 als unsicher und anfällig für Angriffe wie POODLE erwiesen hat.
Hinweis Wenn Sie den Server nicht aktualisieren können, verwenden Sie die AppContext- Klasse, um diese Funktion zu deaktivieren. Verwenden Sie dazu eine der folgenden Methoden:
Programmgesteuert: Muss das allererste sein, was die Anwendung tut, da ServicePointManager nur einmal initialisiert wird. Verwenden Sie das folgende Codebeispiel in Ihrer Anwendung:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);Indem Sie die AppConfig-Datei für Ihre Anwendung verwenden: Fügen Sie der Appconfig-Datei die folgende Zeile hinzu:
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
Weitere Informationen zu den bekannten Problemen in .NET Framework 4.6 finden Sie unter Bekannte Probleme für .NET Framework 4.6 .
Mehr Informationen
Weitere Informationen zu den Änderungen und Auswirkungen der Produktversionierung in .NET Framework 4.6 finden Sie unter Anwendungskompatibilität in .NET Framework 4.6 .
Anmerkungen
Die neue Konfiguration gilt nur, wenn die Anwendung auf .NET Framework 4.6 abzielt. .NET Framework 4.5.2 und frühere Versionen sind nicht betroffen, selbst wenn sie in einer .NET Framework 4.6-Umgebung ausgeführt werden.
Eine Liste der betroffenen Top-Level-APIs:
HttpClient, HttpWebRequest
FtpClient
SmtpClient
SSLStream
SCH_USE_STRONG_CRYPTO Dieses Flag wird automatisch in .NET Framework 4.6 verwendet und beeinflusst das Verhalten, indem es unsichere kryptografische und Hashing-Algorithmen entfernt. Für alle Betriebssystemplattformen vor Windows 10 wird der RC4-Algorithmus nicht mehr verwendet. Ab Windows 10 werden die folgenden zusätzlichen unsicheren Algorithmen entfernt: DES, NULL, EXPORT und MD5
No comments:
Post a Comment