Åtgärd: TLS-protokoll

Från och med .NET Framework 4.6 System.Net.ServicePointManager får klasserna och System.Net.Security.SslStream använda något av följande tre protokoll: Tls1.0, Tls1.1 eller Tls 1.2. SSL3.0-protokollet och RC4-chiffer stöds inte.

Påverkan

Den här ändringen påverkar:

  • Alla appar som använder SSL för att kommunicera med en HTTPS-server eller en socketserver med någon av följande typer: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClientoch SslStream.

  • Alla appar på serversidan som inte kan uppgraderas för att stödja Tls1.0, Tls1.1 eller Tls 1.2..

Åtgärd

Den rekommenderade åtgärden är att uppgradera appen på serversidan till Tls1.0, Tls1.1 eller Tls 1.2. Om detta inte är möjligt, eller om klientappar bryts, AppContext kan klassen användas för att välja bort den här funktionen på något av två sätt:

  • Programmatiskt använder du ett kodfragment som liknar följande:

    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)
    

    Eftersom objektet ServicePointManager bara initieras en gång måste det första programmet gör att definiera kompatibilitetsinställningarna.

  • Genom att lägga till följande rad i körningsavsnittet <> i filen app.config:

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

Observera dock att det inte rekommenderas att välja bort standardbeteendet eftersom det gör programmet mindre säkert.

Se även