Transport Layer Security (TLS) — najlepsze rozwiązania dotyczące środowiska .NET Framework

Protokół Transport Layer Security (TLS) jest standardem branżowym, który umożliwia ochronę prywatności informacji przekazywanych przez Internet. Protokół TLS 1.2 jest standardem, który zapewnia ulepszenia zabezpieczeń w porównaniu z poprzednimi wersjami. Protokół TLS 1.2 zostanie ostatecznie zastąpiony przez najnowszy standard TLS 1.3 , który jest szybszy i ma lepsze zabezpieczenia. W tym artykule przedstawiono zalecenia dotyczące zabezpieczania aplikacji .NET Framework korzystających z protokołu TLS.

Aby zapewnić bezpieczeństwo .NET Framework aplikacji, wersja protokołu TLS nie powinna być zakodowana na stałe. Aplikacje .NET Framework powinny używać wersji protokołu TLS obsługiwanej przez system operacyjny.

Ten dokument jest przeznaczony dla deweloperów, którzy:

Rozważ następujące rekomendacje:

  • W przypadku protokołu TLS 1.2 docelowa wersja .NET Framework 4.7 lub nowsza w aplikacjach oraz docelowa wersja .NET Framework 4.7.1 lub nowsza w aplikacjach WCF.
  • W przypadku protokołu TLS 1.3 docelowy .NET Framework 4.8 lub nowszy.
  • Nie określaj wersji protokołu TLS. Skonfiguruj kod, aby umożliwić systemowi operacyjnemu podjęcie decyzji o wersji protokołu TLS.
  • Wykonaj dokładną inspekcję kodu, aby sprawdzić, czy nie określasz wersji protokołu TLS ani SSL.

Gdy aplikacja umożliwia systemowi operacyjnemu wybranie wersji protokołu TLS:

  • Automatycznie korzysta z nowych protokołów dodanych w przyszłości, takich jak TLS 1.3.
  • System operacyjny blokuje protokoły, które nie są wykrywane jako bezpieczne.

Sekcja Inspekcja kodu i wprowadzanie zmian w kodzie obejmuje inspekcję i aktualizowanie kodu.

W tym artykule wyjaśniono, jak włączyć najsilniejsze zabezpieczenia dostępne dla wersji .NET Framework, dla których aplikacja jest przeznaczona i uruchomiona. Gdy aplikacja jawnie ustawia protokół zabezpieczeń i wersję, rezygnuje z innej alternatywy i rezygnuje z zachowania domyślnego .NET Framework i systemu operacyjnego. Jeśli chcesz, aby aplikacja mogła negocjować połączenie TLS 1.2, jawne ustawienie na niższą wersję protokołu TLS uniemożliwia nawiązanie połączenia TLS 1.2.

Jeśli nie możesz uniknąć trwałego kodowania wersji protokołu, zdecydowanie zalecamy określenie protokołu TLS 1.2. Aby uzyskać wskazówki dotyczące identyfikowania i usuwania zależności protokołu TLS 1.0, pobierz oficjalny dokument Rozwiązywanie problemów z protokołem TLS 1.0 .

Program WCF obsługuje protokoły TLS1.0, 1.1 i 1.2 jako domyślne w .NET Framework 4.7. Począwszy od wersji .NET Framework 4.7.1, program WCF domyślnie jest skonfigurowany do wersji systemu operacyjnego. Jeśli aplikacja jest jawnie skonfigurowana za pomocą SslProtocols.Noneprogramu , program WCF używa domyślnego ustawienia systemu operacyjnego podczas korzystania z transportu NetTcp.

Pytania dotyczące tego dokumentu można zadawać w GitHub problem z najlepszymi rozwiązaniami dotyczącymi protokołu Transport Layer Security (TLS) z .NET Framework.

Przeprowadzanie inspekcji kodu i wprowadzanie zmian w kodzie

W przypadku aplikacji ASP.NET sprawdź <system.web><httpRuntime targetFramework> element web.config, aby sprawdzić, czy używasz zamierzonej wersji .NET Framework.

Aby uzyskać Windows Forms i inne aplikacje, zobacz Instrukcje: określanie wersji docelowej .NET Framework.

Skorzystaj z poniższych sekcji, aby sprawdzić, czy nie używasz określonej wersji protokołu TLS ani SSL.

Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.7 lub nowszej

W poniższych sekcjach pokazano, jak sprawdzić, czy nie używasz określonej wersji protokołu TLS ani SSL.

W przypadku sieci HTTP

ServicePointManager, przy użyciu .NET Framework 4.7 i nowszych wersji, będzie używać domyślnego protokołu zabezpieczeń skonfigurowanego w systemie operacyjnym. Aby uzyskać domyślny wybór systemu operacyjnego, jeśli to możliwe, nie ustawiaj wartości dla ServicePointManager.SecurityProtocol właściwości , która domyślnie ma wartość SecurityProtocolType.SystemDefault.

SecurityProtocolType.SystemDefault Ponieważ to ustawienie powoduje ServicePointManager użycie domyślnego protokołu zabezpieczeń skonfigurowanego przez system operacyjny, aplikacja może działać inaczej w zależności od systemu operacyjnego, na który jest uruchamiany. Na przykład Windows 7 z dodatkiem SP1 używa protokołu TLS 1.0, a Windows 8 i Windows 10 używają protokołu TLS 1.2.

Pozostała część tego artykułu nie ma znaczenia podczas określania wartości docelowej .NET Framework wersji 4.7 lub nowszej dla sieci HTTP.

W przypadku sieci gniazd TCP

SslStream, przy użyciu .NET Framework 4.7 i nowszych wersji, domyślnie system operacyjny wybiera najlepszy protokół zabezpieczeń i wersję. Aby uzyskać najlepszy wybór domyślnego systemu operacyjnego, jeśli to możliwe, nie używaj przeciążeń SslStream metody, które przyjmują jawny SslProtocols parametr. W przeciwnym razie przekaż wartość SslProtocols.None. Zalecamy, aby nie używać programu Default; ustawienie SslProtocols.Default wymusza użycie protokołu SSL 3.0 /TLS 1.0 i uniemożliwia protokół TLS 1.2.

Nie ustawiaj wartości właściwości SecurityProtocol (dla sieci HTTP).

Nie używaj przeciążeń SslStream metody, które przyjmują jawny SslProtocols parametr (dla sieci gniazd TCP). Podczas retarget aplikacji do .NET Framework wersji 4.7 lub nowszej będziesz korzystać z zalecenia dotyczącego najlepszych rozwiązań.

W pozostałej części tego tematu nie ma znaczenia podczas określania wartości docelowej .NET Framework 4.7 lub nowszej dla sieci gniazd TCP.

W przypadku transportu tcp WCF przy użyciu zabezpieczeń transportu z poświadczeniami certyfikatu

Program WCF używa tego samego stosu sieciowego co reszta .NET Framework.

W przypadku określania wartości docelowej 4.7.1 program WCF jest skonfigurowany tak, aby zezwalał systemowi operacyjnemu na wybór najlepszego protokołu zabezpieczeń domyślnie, chyba że jest to jawnie skonfigurowane:

  • W pliku konfiguracji aplikacji.
  • Lub w aplikacji w kodzie źródłowym.

Domyślnie .NET Framework 4.7 i nowsze wersje są skonfigurowane do używania protokołu TLS 1.2 i zezwalają na połączenia przy użyciu protokołu TLS 1.1 lub TLS 1.0. Skonfiguruj program WCF, aby zezwolić systemowi operacyjnemu na wybór najlepszego protokołu zabezpieczeń przez skonfigurowanie powiązania do używania programu SslProtocols.None. Można to ustawić na .SslProtocols SslProtocols.None można uzyskać dostęp z witryny Transport. NetTcpSecurity.Transport można uzyskać dostęp z witryny Security.

Jeśli używasz powiązania niestandardowego:

  • Skonfiguruj program WCF, aby zezwolić systemowi operacyjnemu na wybór najlepszego protokołu zabezpieczeń przez ustawienie SslProtocols .SslProtocols.None
  • Możesz też skonfigurować protokół używany z ścieżką system.serviceModel/bindings/customBinding/binding/sslStreamSecurity:sslProtocolskonfiguracji .

Jeśli nie używasz powiązania niestandardowego i ustawiasz powiązanie WCF przy użyciu konfiguracji, ustaw protokół używany z ścieżką system.serviceModel/bindings/netTcpBinding/binding/security/transport:sslProtocolskonfiguracji .

W przypadku zabezpieczeń komunikatów programu WCF z poświadczeniami certyfikatu

.NET Framework 4.7 i nowszych wersjach domyślnie używa protokołu określonego SecurityProtocol we właściwości . Gdy parametr AppContextSwitchSwitch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols jest ustawiony na truewartość , program WCF wybiera najlepszy protokół( do tls 1.0).

Jeśli aplikacja jest przeznaczona dla wersji .NET Framework starszej niż 4.7

Przeprowadź inspekcję kodu, aby sprawdzić, czy nie ustawiasz określonej wersji protokołu TLS lub SSL, korzystając z następujących sekcji:

W przypadku .NET Framework 4.6 - 4.6.2, a nie WCF

DontEnableSystemDefaultTlsVersionsAppContext Ustaw przełącznik na false. Zobacz Konfigurowanie zabezpieczeń za pośrednictwem przełączników AppContext.

W przypadku programu WCF używającego .NET Framework 4.6–4.6.2 przy użyciu zabezpieczeń transportu TCP z poświadczeniami certyfikatu

Musisz zainstalować najnowsze poprawki systemu operacyjnego. Zobacz Aktualizacje zabezpieczeń.

Platforma WCF automatycznie wybiera najwyższy protokół dostępny do protokołu TLS 1.2, chyba że jawnie skonfigurujesz wersję protokołu. Aby uzyskać więcej informacji, zobacz poprzednią sekcję Dla transportu TCP WCF przy użyciu zabezpieczeń transportu z poświadczeniami certyfikatu.

W przypadku .NET Framework 3.5 - 4.5.2, a nie WCF

Zalecamy uaktualnienie aplikacji do wersji .NET Framework 4.7 lub nowszej. Jeśli nie możesz przeprowadzić uaktualnienia, wykonaj następujące kroki.

Ustaw klucze rejestru SchUseStrongCrypto i SystemDefaultTlsVersions na 1. Zobacz Konfigurowanie zabezpieczeń za pośrednictwem rejestru Windows. .NET Framework w wersji 3.5 obsługuje flagę SchUseStrongCrypto tylko wtedy, gdy przekazywana jest jawna wartość protokołu TLS.

Jeśli korzystasz z programu .NET Framework 3.5, musisz zainstalować poprawkę gorącą, aby można było określić protokół TLS 1.2:

KB3154518 Pakiet zbiorczy niezawodności HR-1605 — obsługa domyślnych wersji systemu TLS zawartych w .NET Framework 3.5.1 w systemie Windows 7 SP1 i Server 2008 R2 z dodatkiem SP1
KB3154519 Pakiet zbiorczy niezawodności HR-1605 — obsługa domyślnych wersji systemu TLS zawartych w .NET Framework 3.5 w Windows Server 2012
KB3154520 Pakiet zbiorczy niezawodności HR-1605 — obsługa domyślnych wersji systemu TLS uwzględnionych w .NET Framework 3.5 w Windows 8.1 i Windows Server 2012 R2
KB3156421 Pakiet zbiorczy poprawek 1605 3154521 dla .NET Framework 4.5.2 i 4.5.1 w Windows

W przypadku programu WCF używającego .NET Framework 3.5– 4.5.2 przy użyciu zabezpieczeń transportu TCP z poświadczeniami certyfikatu

Te wersje platformy WCF są zakodowane na stałe, aby używać wartości SSL 3.0 i TLS 1.0. Tych wartości nie można zmienić. Aby używać protokołów TLS 1.1 i 1.2, należy zaktualizować program NET Framework 4.6 lub nowsze wersje i przeprowadzić ich ponowną aktualizację.

Jeśli aplikacja jest przeznaczona dla .NET Framework 3.5

Jeśli musisz jawnie ustawić protokół zabezpieczeń zamiast zezwalać programowi .NET lub systemowi operacyjnemu na wybieranie protokołu zabezpieczeń, dodaj SecurityProtocolTypeExtensions i SslProtocolsExtension wyliczenia do kodu. SecurityProtocolTypeExtensionsi SslProtocolsExtension zawierają wartości , Tls12Tls11i SystemDefault . Aby uzyskać więcej informacji, zobacz Support for TLS System Default Versions included in .NET Framework 3.5 on Windows 8.1 and Windows Server 2012 R2 (Obsługa domyślnych wersji systemu TLS w .NET Framework 3.5 w Windows 8.1 i Windows Server 2012 R2).

Konfigurowanie zabezpieczeń za pomocą przełączników AppContext (w przypadku wersji .NET Framework 4.6 lub nowszej)

Przełączniki AppContext opisane w tej sekcji są istotne, jeśli aplikacja jest przeznaczona lub jest uruchamiana w wersji .NET Framework 4.6 lub nowszej. Niezależnie od tego, czy są one jawnie ustawione, przełączniki powinny być false , jeśli to możliwe. Jeśli chcesz skonfigurować zabezpieczenia za pośrednictwem jednego lub obu przełączników, nie należy określać wartości protokołu zabezpieczeń w kodzie; spowoduje to zastąpienie przełącznika(es).

Przełączniki mają taki sam efekt, niezależnie od tego, czy korzystasz z sieci HTTP (ServicePointManager) czy sieci gniazd TCP (SslStream).

Switch.System.Net.DontEnableSchUseStrongCrypto

Wartość false dla Switch.System.Net.DontEnableSchUseStrongCrypto przyczyn, dla których aplikacja używa silnej kryptografii. Wartość false dla korzystania DontEnableSchUseStrongCrypto z bezpieczniejszych protokołów sieciowych (TLS 1.2, TLS 1.1 i TLS 1.0) oraz protokołów blokowych, które nie są bezpieczne. Aby uzyskać więcej informacji, zobacz flagę SCH_USE_STRONG_CRYPTO. Wartość wyłącza silną true kryptografię dla aplikacji. Ten przełącznik wpływa tylko na połączenia klienta (wychodzące) w aplikacji.

Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.6 lub nowszej, spowoduje to przełączenie wartości domyślnych na false. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja działa w wersji .NET Framework 4.6, ale jest przeznaczona dla starszej wersji, przełącz wartość domyślną na true. W takim przypadku należy jawnie ustawić ją na false.

DontEnableSchUseStrongCrypto Powinna mieć wartość true tylko wtedy, gdy musisz nawiązać połączenie ze starszymi usługami, które nie obsługują silnej kryptografii i nie można ich uaktualnić.

Switch.System.Net.DontEnableSystemDefaultTlsVersions

Wartość parametru falseSwitch.System.Net.DontEnableSystemDefaultTlsVersions powoduje, że aplikacja zezwala systemowi operacyjnemu na wybór protokołu. Wartość true powoduje, że aplikacja używa protokołów wybranych przez .NET Framework.

Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.7 lub nowszej, spowoduje to przełączenie wartości domyślnych na false. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja działa w wersji .NET Framework 4.7 lub nowszej, ale jest przeznaczona dla starszej wersji, przełącz wartość domyślną na true. W takim przypadku należy jawnie ustawić ją na false.

Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols

Wartość parametru false powoduje Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols , że aplikacja używa wartości zdefiniowanej w ServicePointManager.SecurityProtocols w celu zabezpieczenia komunikatów przy użyciu poświadczeń certyfikatu. Wartość używa najwyższego true dostępnego protokołu( do TLS1.0)

W przypadku aplikacji przeznaczonych dla .NET Framework 4.7 i nowszych wersji ta wartość jest domyślnie ustawiona na false. W przypadku aplikacji przeznaczonych dla .NET Framework w wersji 4.6.2 i starszych ta wartość jest domyślnie ustawiona na true.

Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions

Wartość false dla Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions ustawia domyślną konfigurację, aby umożliwić systemowi operacyjnemu wybór protokołu. Wartość true ustawia wartość domyślną najwyższego dostępnego protokołu ( do TLS1.2).

W przypadku aplikacji przeznaczonych dla .NET Framework 4.7.1 i nowszych wersji ta wartość jest domyślnie ustawiona na false. W przypadku aplikacji przeznaczonych dla .NET Framework w wersji 4.7 i starszych ta wartość jest domyślnie ustawiona na true.

Aby uzyskać więcej informacji na temat protokołów TLS, zobacz Ograniczanie ryzyka: protokoły TLS. Aby uzyskać więcej informacji na temat AppContext przełączników, zobacz <AppContextSwitchOverrides> Element.

Konfigurowanie zabezpieczeń za pośrednictwem rejestru Windows

Ostrzeżenie

Ustawienie kluczy rejestru wpływa na wszystkie aplikacje w systemie. Tej opcji należy używać tylko wtedy, gdy masz pełną kontrolę nad maszyną i możesz kontrolować zmiany w rejestrze.

Jeśli ustawienie jednego lub obu AppContext przełączników nie jest opcją, możesz kontrolować protokoły zabezpieczeń używane przez aplikację z kluczami rejestru Windows opisanymi w tej sekcji. Jeśli aplikacja działa w wersji .NET Framework 4.5.2 lub starszej wersji, może nie być w stanie użyć jednego lub obu AppContext przełączników albo jeśli nie możesz edytować pliku konfiguracji. Jeśli chcesz skonfigurować zabezpieczenia za pomocą rejestru, nie należy określać wartości protokołu zabezpieczeń w kodzie; Spowoduje to zastąpienie ustawienia rejestru.

Nazwy kluczy rejestru są podobne do nazw odpowiednich AppContext przełączników, ale bez DontEnable wstępnego elementu nazwy. Na przykład AppContext przełącznik DontEnableSchUseStrongCrypto jest kluczem rejestru o nazwie SchUseStrongCrypto.

Te klucze są dostępne we wszystkich wersjach .NET Framework, dla których istnieje najnowsza poprawka zabezpieczeń. Zobacz Aktualizacje zabezpieczeń.

Wszystkie klucze rejestru opisane poniżej mają taki sam efekt, niezależnie od tego, czy korzystasz z sieci HTTP (ServicePointManager) czy sieci gniazd TCP (SslStream).

SchUseStrongCrypto

Klucz HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SchUseStrongCrypto rejestru ma wartość typu DWORD. Wartość 1 powoduje, że aplikacja używa silnej kryptografii. Silna kryptografia używa bezpieczniejszych protokołów sieciowych (TLS 1.2, TLS 1.1 i TLS 1.0) oraz blokuje protokoły, które nie są bezpieczne. Wartość 0 wyłącza silną kryptografię. Aby uzyskać więcej informacji, zobacz flagę SCH_USE_STRONG_CRYPTO. To ustawienie rejestru ma wpływ tylko na połączenia klienta (wychodzące) w aplikacji.

Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.6 lub nowszej, ten klucz domyślnie ma wartość 1. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.5.2 lub starszej, klucz jest domyślnie ustawiona na 0. W takim przypadku należy jawnie ustawić jego wartość na 1.

Ten klucz powinien mieć wartość 0, jeśli musisz nawiązać połączenie ze starszymi usługami, które nie obsługują silnej kryptografii i nie można ich uaktualnić.

SystemDefaultTlsVersions

Klucz HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SystemDefaultTlsVersions rejestru ma wartość typu DWORD. Wartość 1 powoduje, że aplikacja zezwala systemowi operacyjnemu na wybór protokołu. Wartość 0 powoduje, że aplikacja używa protokołów wybranych przez .NET Framework.

<VERSION>musi mieć wartość v4.0.30319 (dla .NET Framework 4 lub nowszej) lub 2.0.50727 (dla .NET Framework 3.5).

Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.7 lub nowszej, ten klucz domyślnie ma wartość 1. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja jest przeznaczona dla .NET Framework wersji 4.6.1 lub starszej, klucz jest domyślnie ustawiona na 0. W takim przypadku należy jawnie ustawić jego wartość na 1.

Aby uzyskać więcej informacji, zobacz Aktualizacja zbiorcza dla Windows 10 w wersji 1511 i Windows Server 2016 Technical Preview 4: 10 maja 2016 r.

Aby uzyskać więcej informacji na temat programu .NET Framework 3.5.1, zobacz Support for TLS System Default Versions included in .NET Framework 3.5.1 on Windows 7 SP1 and Server 2008 R2 SP1 (Obsługa domyślnych wersji systemu TLS w wersji .NET Framework 3.5.1 w systemie Windows 7 z dodatkiem SP1 i server 2008 R2 z dodatkiem SP1.

Poniżej przedstawiono . Plik REG ustawia klucze rejestru i ich warianty na najbezpieczniejsze wartości:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

Konfigurowanie protokołów Schannel w rejestrze Windows

Rejestru można używać do szczegółowej kontroli nad protokołami wynegocjowanych przez klienta i/lub aplikację serwera. Sieć aplikacji przechodzi przez kanał Schannel (czyli inną nazwę bezpiecznego kanału). Konfigurując usługę Schannel, można skonfigurować zachowanie aplikacji.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols Zacznij od klucza rejestru. W tym kluczu można utworzyć dowolne podklucze w zestawie SSL 2.0, , SSL 3.0TLS 1.0, TLS 1.1i TLS 1.2. W ramach każdego z tych podklucza można utworzyć podklucze Client i/lub Server. W obszarze Client i Servermożna utworzyć wartości DisabledByDefault DWORD (0 lub 1) i Enabled (0 lub 1).

Flaga SCH_USE_STRONG_CRYPTO

Po włączeniu (domyślnie przez AppContext przełącznik lub rejestr Windows) .NET Framework używa SCH_USE_STRONG_CRYPTO flagi, gdy aplikacja inicjuje połączenie TLS z serwerem. .NET Framework przekazuje flagę, aby Schannel poinstruować ją o wyłączeniu znanych słabych algorytmów kryptograficznych, zestawów szyfrowania i wersji protokołu TLS/SSL, które w przeciwnym razie mogą być włączone w celu lepszego współdziałania. Aby uzyskać więcej informacji, zobacz:

Flaga SCH_USE_STRONG_CRYPTO jest również przekazywana do Schannel dla połączeń klienta (wychodzących), gdy jawnie używasz Tls (TLS 1.0), Tls11lub Tls12 wyliczone wartości SecurityProtocolType lub SslProtocols. Flaga SCH_USE_STRONG_CRYPTO jest używana tylko w przypadku połączeń, w których aplikacja pełni rolę klienta. Słabe protokoły i algorytmy można wyłączyć, gdy aplikacje pełnią rolę serwera, konfigurując ustawienia rejestru całego Schannel komputera.

Aktualizacje zabezpieczeń

Najlepsze rozwiązania w tym artykule zależą od najnowszych aktualizacji zabezpieczeń, które są instalowane. Te aktualizacje obejmują możliwość korzystania z zaawansowanych funkcji .NET Framework 4.7 i nowszych. Najnowsze aktualizacje zabezpieczeń są ważne, jeśli aplikacja działa w wersji .NET Framework 4.7 lub nowszej (nawet jeśli jest przeznaczona dla wcześniejszej wersji).

Aby zaktualizować .NET Framework, aby umożliwić systemowi operacyjnemu wybór najlepszej wersji protokołu TLS, należy zainstalować co najmniej:

Zobacz też:

Obsługa protokołu TLS 1.2

Aby aplikacja negocjowała protokół TLS 1.2, system operacyjny i wersja .NET Framework muszą obsługiwać protokół TLS 1.2.

Wymagania dotyczące systemu operacyjnego dla obsługi protokołu TLS 1.2

Aby włączyć lub ponownie włączyć protokół TLS 1.2 i/lub TLS 1.1 w systemie, który je obsługuje, zobacz Transport Layer Security (TLS) ustawienia rejestru.

System operacyjny Obsługa protokołu TLS 1.2
Windows 10
Windows Server 2016
Obsługiwane i włączone domyślnie.
Windows 8.1
Windows Server 2012 z dodatkiem R2
Obsługiwane i włączone domyślnie.
Windows 8.0
Windows Server 2012
Obsługiwane i włączone domyślnie.
Windows 7 z dodatkiem SP1
Windows Server 2008 R2 SP1
Obsługiwane, ale nie są domyślnie włączone. Aby uzyskać szczegółowe informacje na temat włączania protokołu TLS, zobacz stronę sieci Web Ustawienia rejestru protokołu Transport Layer Security (TLS ).
Windows Server 2008 Obsługa protokołów TLS 1.2 i TLS 1.1 wymaga aktualizacji. Zobacz Aktualizacja, aby dodać obsługę protokołu TLS 1.1 i TLS 1.2 w programie Windows Server 2008 SP2.
Windows Vista Nieobsługiwane.

Aby uzyskać informacje o tym, które protokoły TLS/SSL są domyślnie włączone w każdej wersji Windows, zobacz Protokoły w protokole TLS/SSL (SSP Schannel).

Wymagania dotyczące obsługi protokołu TLS 1.2 przy użyciu platformy .NET Framework 3.5

W tej tabeli przedstawiono aktualizację systemu operacyjnego wymaganą do obsługi protokołu TLS 1.2 z .NET Framework 3.5. Zalecamy zastosowanie wszystkich aktualizacji systemu operacyjnego.

System operacyjny Minimalna aktualizacja wymagana do obsługi protokołu TLS 1.2 z .NET Framework 3.5
Windows 10
Windows Server 2016
Aktualizacja zbiorcza dla Windows 10 w wersji 1511 i Windows Server 2016 Technical Preview 4: 10 maja 2016 r.
Windows 8.1
Windows Server 2012 z dodatkiem R2
Obsługa domyślnych wersji systemu TLS zawartych w .NET Framework 3.5 w Windows 8.1 i Windows Server 2012 R2
Windows 8.0
Windows Server 2012
Obsługa domyślnych wersji systemu TLS zawartych w .NET Framework 3.5 w Windows Server 2012
Windows 7 z dodatkiem SP1
Windows Server 2008 R2 SP1
Obsługa domyślnych wersji systemu TLS zawartych w .NET Framework 3.5.1 w systemie Windows 7 SP1 i Server 2008 R2 SP1
Windows Server 2008 Obsługa domyślnych wersji systemu TLS zawartych w .NET Framework 2.0 SP2 w systemie Windows Vista SP2 i Server 2008 SP2
Windows Vista Nieobsługiwane