Симптоми
Да предположим, че сте извършили надстройка до Microsoft .NET Framework 4.6 на вашия компютър. Когато използвате приложение, което използва SSL 3.0 ServicePointManager или SslStream интерфейси за свързване със сървъра, връзката не успее.
Причина
Този проблем възниква, защото по подразбиране набор от протоколи SSL/TLS, използван от ServicePointManager и SslStream е променен.
Старата стойност: Ssl 3.0 | TLS 1.0 | TLS 1.1
Новата стойност: Tls 1.0 | TLS 1.1 | TLS 1.2
Заобикаляне на проблема
За да заобиколите този проблем, актуализирайте сървър Tls 1.0, Tls 1.1 или Tls 1.2 защото SSL 3.0 е доказано, че несигурна и уязвими за атаки като ПУДЕЛ.
Забележка: Ако не можете да актуализирате сървъра, използвайте AppContext клас да откажете. За тази цел използвайте един от следните методи:
-
Програмно: Трябва да бъде първото нещо, приложението не, защото ServicePointManager ще инициализира само веднъж. Използвайте следния пример код във вашето приложение:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
С помощта на AppConfig файла за вашето приложение: Добавете следния ред към файла Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
За повече информация относно известните проблеми в .NET Framework 4.6 вижте известни проблеми с .NET Framework 4.6.
Допълнителна информация
За повече информация за продукта версии промени и въздействие в .NET Framework 4.6 вижте Съвместимостта на приложенията в .NET Framework 4.6.
Бележки
-
Новата конфигурация ще се прилагат само когато приложението е насочена към .NET Framework 4.6. .NET Framework 4.5.2 и по-ранни версии няма да бъдат засегнати дори ако се изпълняват в .NET Framework 4.6 среда.
-
Списък на засегнатите най-високо ниво API:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO Този флаг няма да бъдат използвани в .NET Framework 4.6 и засяга поведение чрез премахване на опасните хеширане и криптографски алгоритми. За всички платформи, операционната система ще бъдат премахнати от Windows 10, алгоритъма на RC4 от употреба. От 10 на Windows, ще бъдат премахнати следните допълнителни опасни алгоритми: DES, NULL, ЕКСПОРТИРАНЕ и MD5