Po upgradu na rozhraní .NET Framework 4.6 se nelze připojit k serveru pomocí rozhraní API ServicePointManager nebo SslStream

Platí pro
.NET Framework 4.6.2

Příznaky

Předpokládejme, že jste v počítači upgradovali na Microsoft .NET Framework 4.6. Když použijete aplikaci, která používá SSL 3.0 společně s rozhraními API ServicePointManager nebo SslStream pro připojení k serveru, připojení selže.

Příčina

K tomuto problému dochází, protože byla změněna výchozí sada protokolů SSL/TLS, kterou používají ServicePointManager a SslStream.

Stará hodnota: SSL 3.0 | TLS 1.0 | TLS 1.1

      

Nová hodnota: TLS 1.0 | TLS 1.1 | TLS 1.2

Alternativní řešení

Pokud chcete tento problém obejít, aktualizujte server na Tls 1.0, TLS 1.1 nebo TLS 1.2, protože se ukázalo, že SSL 3.0 není zabezpečený a je zranitelný vůči útokům, jako je POODLE.

Poznámka Pokud nemůžete server aktualizovat, použijte AppContext třídu k vyjádření výslovného nesouhlasu s touto funkcí. K tomu použijte jednu z následujících metod:

  • Programově: Musí to být úplně první věc, kterou aplikace udělá, protože ServicePointManager se inicializuje pouze jednou. V aplikaci použijte následující příklad kódu:

    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
            private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
            AppContext.SetSwitch(DisableCachingName, true);
            AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
    
  • Použití souboru AppConfig pro vaši aplikaci: Do souboru Appconfig přidejte následující řádek:
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>

        
Další informace o známých problémech v rozhraní .NET Framework 4.6 naleznete v tématu Známé problémy v rozhraní .NET Framework 4.6 .

Další informace

Další informace o změnách verzí produktu a jeho dopadu v rozhraní .NET Framework 4.6 naleznete v tématu Kompatibilita aplikací v rozhraní .NET Framework 4.6.

Poznámky

  • Nová konfigurace se použije pouze v případě, že aplikace cílí na rozhraní .NET Framework 4.6. Rozhraní .NET Framework 4.5.2 a starší verze nebudou ovlivněny, ani když běží v prostředí .NET Framework 4.6.

  • Seznam ovlivněných rozhraní API nejvyšší úrovně:

    • HttpClient, HttpWebRequest
    • FtpClient
    • SmtpClient
    • SslStream
  • SCH_USE_STRONG_CRYPTO Tento příznak bude automaticky použit v rozhraní .NET Framework 4.6 a má vliv na chování odebráním nebezpečných kryptografických a hashovacích algoritmů. U všech platforem operačních systémů starších než Windows 10 se algoritmus RC4 přestane používat. Z Windows 10 budou odebrány následující dodatečné nebezpečné algoritmy: DES, NULL, EXPORT a MD5