Nie można połączyć się z serwerem przy użyciu ServicePointManager lub SslStream API po uaktualnieniu 4.6.NET Framework

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


Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×