Objawy
Założono, że przeprowadzono aktualizację do programu Microsoft.NET Framework 4.6 na komputerze. Korzystając z aplikacji, która używa protokołu SSL 3.0 wraz z ServicePointManager lub SslStream API, aby połączyć się z serwerem, nie można nawiązać połączenia.
Przyczyna
Ten problem występuje, ponieważ zmieniono domyślny zestaw protokołów SSL/TLS używanego przez ServicePointManager i SslStream .
Stara wartość: Ssl 3.0 | Protokół TLS 1.0 | TLS 1.1
Nowa wartość: protokół Tls 1.0 | TLS 1.1 | TLS 1.2
Obejście problemu
Aby obejść ten problem, należy zaktualizować serwer Tls 1.0, Tls 1.1 lub Tls 1.2 ponieważ SSL 3.0 wykazano być podatny na ataki, takie jak PUDEL i bez zabezpieczeń.
Uwaga Jeśli serwer nie może zaktualizować, użyj AppContext klasa zrezygnować z tej funkcji. Aby to zrobić, użyj jednej z następujących metod:
-
Programowo: Musi być pierwszą rzeczą, jaką aplikacja nie zainicjowany ServicePointManager tylko raz. Użyć następującego kodu w aplikacji:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
Przy użyciu pliku AppConfig aplikacji: Dodaj następujący wiersz do pliku Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
Aby uzyskać więcej informacji o znanych problemach 4.6.NET Framework Zobacz znane problemy 4.6.NET Framework.
Więcej informacji
Aby uzyskać więcej informacji na temat zmiany wersji produktu i wpływu 4.6.NET Framework Zobacz Zgodność aplikacji.NET Framework 4.6.
Uwagi
-
Nowa konfiguracja ma zastosowanie tylko w przypadku, gdy aplikacja jest platformą.NET Framework 4.6. .NET Framework 4.5.2 i wcześniejszych wersjach pozostaną nienaruszone, nawet jeśli są uruchamiane w środowisku.NET Framework 4.6.
-
Listę interfejsów API, którego dotyczy najwyższego poziomu:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO Ta flaga jest będzie automatycznie używany w 4.6.NET Framework i wpływa na zachowanie przez usunięcie niebezpiecznych algorytmy kryptograficzne i mieszania. Dla wszystkich platform systemu operacyjnego wcześniejszych niż Windows 10 algorytm RC4 zostaną usunięte z użycia. Od 10 systemu Windows zostaną usunięte następujące dodatkowe algorytmy niebezpieczny: DES, NULL, EKSPORTOWANIE i MD5