Symptome
Angenommen, Sie haben auf Ihrem Computer ein Upgrade auf Microsoft .NET Framework 4.6 durchgeführt. Wenn Sie eine Anwendung verwenden, die SSL 3.0 zusammen mit ServicePointManager- oder SslStream-APIs verwendet, um eine Verbindung mit einem Server herzustellen, schlägt die Verbindung fehl.
Ursache
Dieses Problem tritt auf, weil der Standardsatz von SSL/TLS-Protokollen geändert wurde, die von ServicePointManager und SslStream verwendet werden.
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 SSL 3.0 sich 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 dieses Feature zu deaktivieren. Wenden Sie hierzu eine der folgenden Methoden an:
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);Wenn 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 bekannten Problemen in .NET Framework 4.6 finden Sie unter Bekannte Probleme mit dem .NET Framework 4.6.
Weitere Informationen
Weitere Informationen zu den Änderungen der Produktversionsverwaltung und deren Auswirkungen in .NET Framework 4.6 finden Sie unter Anwendungskompatibilität in .NET Framework 4.6.
Notizen
Die neue Konfiguration wird nur angewendet, wenn die Anwendung auf .NET Framework 4.6 ausgerichtet ist. .NET Framework 4.5.2 und frühere Versionen sind nicht betroffen, auch wenn sie in einer .NET Framework 4.6-Umgebung ausgeführt werden.
Eine Liste der betroffenen APIs der obersten Ebene:
- HttpClient, HttpWebRequest
- FtpClient
- SmtpClient
- SSLStream
SCH_USE_STRONG_CRYPTO Dieses Flag wird im .NET Framework 4.6 automatisch verwendet und wirkt sich auf das Verhalten aus, indem unsichere Kryptografie- und Hashalgorithmen entfernt werden. Für alle Betriebssystemplattformen vor Windows 10 wird der RC4-Algorithmus entfernt. Aus Windows 10 werden die folgenden zusätzlichen unsicheren Algorithmen entfernt: DES, NULL, EXPORT und MD5