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