Entschärfung: TLS-ProtokolleMitigation: TLS Protocols

Ab .NET Framework 4.6 dürfen die Klassen System.Net.ServicePointManager und System.Net.Security.SslStream eines der drei folgenden Protokolle verwenden: Tls1.0, Tls1.1 oder Tls 1.2.Starting with the .NET Framework 4.6, the System.Net.ServicePointManager and System.Net.Security.SslStream classes are allowed to use one of the following three protocols: Tls1.0, Tls1.1, or Tls 1.2. Weder das SSL3.0-Protokoll noch das RC4-Verschlüsselungsverfahren werden unterstützt.The SSL3.0 protocol and RC4 cipher are not supported.

AuswirkungenImpact

Von dieser Änderung sind folgende Punkte betroffen:This change affects:

  • Jede App, die SSL für die Kommunikation zu einem HTTPS- oder Socketserver mithilfe eines der folgenden Typen verwendet: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClient und SslStream.Any app that uses SSL to talk to an HTTPS server or a socket server using any of the following types: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClient, and SslStream.

  • Alle serverseitigen Apps, die nicht für die Unterstützung von Tls1.0, Tls1.1 oder Tls 1.2 aktualisiert werden können.Any server-side app that cannot be upgraded to support Tls1.0, Tls1.1, or Tls 1.2..

ProblemumgehungMitigation

Die empfohlene Minderung besteht darin, die serverseitige App auf Tls1.0, Tls1.1 oder Tls 1.2 zu aktualisieren.The recommended mitigation is to upgrade the sever-side app to Tls1.0, Tls1.1, or Tls 1.2. Wenn dies nicht möglich ist oder die Client-Apps fehlerhaft sind, kann die Klasse AppContext verwendet werden, um das Feature auf zwei verschiedene Art und Weisen abzuwählen: If this is not feasible, or if client apps are broken, the AppContext class can be used to opt out of this feature in either of two ways:

  • Programmgesteuert, durch die Verwendung eines Codeausschnitts wie dem Folgenden:Programmatically, by using a code snippet like the following:

    const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
    const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
    AppContext.SetSwitch(DisableCachingName, true); 
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); 
    
    Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching"
    Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto"
    AppContext.SetSwitch(DisableCachingName, True)
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
    

    Da das ServicePointManager-Objekt nur einmal initialisiert wird, muss die Anwendung zunächst diese Kompatibilitätseinstellungen definieren.Because the ServicePointManager object is initialized only once, defining these compatibility settings must be the first thing the application does.

  • Durch Hinzufügen der folgenden Zeile zum Abschnitt <runtime> Ihrer Datei „app.config“:By adding the following line to the <runtime> section of your app.config file:

    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>  
    

Beachten Sie jedoch, dass das Abwählen des Standardverhaltens nicht empfohlen wird, da die Anwendung dadurch unsichererer wird.Note, however, that opting out of the default behavior is not recommended, since it makes the application less secure.

Siehe auchSee Also

NeuausrichtungsänderungenRetargeting Changes