Omezení rizik: Protokoly TLS

Počínaje rozhraním .NET Framework 4.6 System.Net.ServicePointManager mohou třídy System.Net.Security.SslStream používat jeden z následujících tří protokolů: Tls1.0, Tls1.1 nebo Tls 1.2. Protokol SSL3.0 a šifry RC4 se nepodporují.

Dopad

Tato změna má vliv na:

  • Každá aplikace, která používá protokol SSL ke komunikaci se serverem HTTPS nebo serverem soketů pomocí některého z následujících typů: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClienta SslStream.

  • Všechny aplikace na straně serveru, které není možné upgradovat na podporu protokolu Tls1.0, Tls1.1 nebo Tls 1.2..

Zmírnění

Doporučeným zmírněním rizik je upgrade aplikace na straně serveru na Tls1.0, Tls1.1 nebo Tls 1.2. Pokud to není možné nebo pokud jsou klientské aplikace přerušené, AppContext můžete třídu použít k odhlášení z této funkce jedním ze dvou způsobů:

  • Programově pomocí fragmentu kódu, jako je následující:

    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)
    

    Vzhledem k tomu, že objekt ServicePointManager je inicializován pouze jednou, definování těchto nastavení kompatibility musí být první věcí, kterou aplikace dělá.

  • Přidáním následujícího řádku do <části modulu runtime> souboru app.config:

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

Upozorňujeme však, že odhlášení z výchozího chování se nedoporučuje, protože aplikace je méně zabezpečená.

Viz také