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

WAŻNE: Ten artykuł został przetłumaczony przy użyciu oprogramowania firmy Microsoft do tłumaczenia maszynowego i może być poprawiony przy użyciu technologii Community Translation Framework (CTF). Firma Microsoft udostępnia artykuły tłumaczone maszynowo, poprawione przez społeczność, a także tłumaczone przez tłumaczy profesjonalnych, aby zapewnić dostęp do wszystkich artykułów w bazie wiedzy w wielu językach. Artykuły tłumaczone maszynowo i poprawione mogą zawierać błędy pisowni, składniowe i gramatyczne. Firma Microsoft nie ponosi odpowiedzialności za żadne nieścisłości, błędy ani szkody spowodowane przez niepoprawne tłumaczenia zawartości ani przez korzystanie z niej przez klientów. Więcej o strukturze CTF: http://support.microsoft.com/gp/machine-translation-corrections/pl.

Anglojęzyczna wersja tego artykułu to: 3069494
Symptomy
Założono, że przeprowadzono aktualizację do programu Microsoft.NET Framework 4.6 na komputerze. Korzystając z aplikacji korzystającej z protokołu SSL 3.0, wraz z ServicePointManager lub SslStream API do nawiązania połączenia z serwerem, połączenie nie powiedzie się.
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ść: 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 okazały się 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ą, aplikacja nie wymaga, ponieważServicePointManagerzostanie zainicjowany tylko raz. W poniższym przykładzie kodu można używać 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);
  • Za pomocą pliku AppConfig aplikacji: Dodaj następujący wiersz do pliku Appconfig:
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"></AppContextSwitchOverrides>


Aby uzyskać więcej informacji dotyczących znanych problemów z 4.6.NET Framework Zobacz Znane problemy dotyczące 4.6.NET Framework.
Więcej informacji
Aby uzyskać więcej informacji na temat zmiany wersji produktu i wpływu w 4.6.NET Framework Zobacz Zgodność aplikacji w.NET Framework 4.6.

Uwagi
  • Nowa konfiguracja ma zastosowanie tylko w przypadku, gdy aplikacja jest kierowana 4.6.NET Framework. .NET Framework 4.5.2 i wcześniejszych versionswill pozostaje nienaruszona nawet, jeśli są uruchamiane w środowisku.NET Framework 4.6.
  • Wykaz interfejsów API najwyższego poziomu usterce:
    • HttpClient, HttpWebRequest
    • FtpClient
    • SmtpClient
    • SslStream
  • SCH_USE_STRONG_CRYPTO Ta flaga ma być automatycznie używane 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 algorytmRC4 zostaną usunięte z użycia. Od 10 systemu Windows zostaną usunięte następujące dodatkowe algorytmy niebezpieczny:DES, NULL, EKSPORTOWAĆ i MD5

Właściwości

Identyfikator artykułu: 3069494 — ostatni przegląd: 07/22/2015 18:15:00 — zmiana: 1.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3069494 KbMtpl
Opinia