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. TLS 1.2 to standard, który zapewnia ulepszenia zabezpieczeń w poprzednich wersjach. Wersja TLS 1.2 zostanie ostatecznie zastąpiona najnowszym wydanym standardem TLS 1.3, który jest szybszy i ma lepsze zabezpieczenia. Ten artykuł zawiera zalecenia dotyczące .NET Framework aplikacji, które korzystają z protokołu TLS.

Aby zagwarantować.NET Framework aplikacje pozostaną bezpieczne, wersja TLS nie powinna być na dysku. Aplikacje .NET Framework powinny używać wersji protokołu TLS obsługiwanej przez system operacyjny.

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

Zalecamy wykonanie następujących czynności:

  • Aplikacje .NET Framework w wersji 4.7 lub nowszej. Przekieruj .NET Framework w wersji 4.7.1 lub nowszej w aplikacjach WCF.
  • Nie określaj wersji TLS. Skonfiguruj kod, aby pozwolić systemowi systemu operacyjnego na decydowanie o wersji TLS.
  • Wykonaj dokładną inspekcję kodu, aby sprawdzić, czy nie określasz wersji protokołu TLS lub SSL.

Gdy aplikacja umożliwia systemowi operacyjnego wybranie wersji TLS:

  • Automatycznie wykorzystuje nowe protokoły dodane w przyszłości, takie jak TLS 1.3.
  • System operacyjny blokuje protokoły, które nie są bezpieczne.

Sekcja Audit your code and make code changes (Inspekcja kodu i zmiany kodu) obejmuje inspekcję i aktualizowanie kodu.

W tym artykule wyjaśniono, jak włączyć najsilniejsze zabezpieczenia dostępne dla wersji aplikacji.NET Framework dla których aplikacja jest uruchamiana. Gdy aplikacja jawnie ustawia protokół zabezpieczeń i wersję, zrezygnuje z żadnej innej alternatywy i zrezygnuje z domyślnego zachowania .NET Framework systemu operacyjnego. Jeśli chcesz, aby twoja aplikacja mogła negocjować połączenie TLS 1.2, jawne ustawienie niższej wersji TLS uniemożliwia połączenie TLS 1.2.

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

Program WCF obsługuje domyślną obsługę TLS 1.0, 1.1 i 1.2 w .NET Framework 4.7. Począwszy od .NET Framework 4.7.1, program WCF domyślnie konfiguruje wersję systemu operacyjnego. Jeśli aplikacja jest jawnie skonfigurowana za pomocą programu , program WCF używa domyślnego ustawienia systemu operacyjnego SslProtocols.None podczas korzystania z transportu NetTcp.

Pytania dotyczące tego dokumentu można zadawać w GitHub rozwiązaniach dotyczących Transport Layer Security (TLS)za pomocą .NET Framework.

Inspekcja kodu i zmiany kodu

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

Aby Windows formularzy i innych aplikacji, zobacz How to: Target a Version of the .NET Framework( Jak: docelowa wersja .NET Framework).

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

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

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

W przypadku sieci HTTP

ServicePointManager, używając .NET Framework wersji 4.7 lub nowszej, użyje domyślnego protokołu zabezpieczeń skonfigurowanego w tym systemu. Aby uzyskać domyślny wybór systemu operacyjnego, jeśli to możliwe, nie należy ustawiać wartości właściwości ServicePointManager.SecurityProtocol , która domyślnie ma wartość SecurityProtocolType.SystemDefault .

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

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

W przypadku sieci gniazd TCP

SslStream, używając .NET Framework wersji 4.7 i nowszych, 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ń metody , które SslStream używają jawnego SslProtocols parametru. W przeciwnym razie SslProtocols.None przekaż . Nie zalecamy używania protokołu ; ustawienie wymusza użycie protokołu Default SslProtocols.Default SSL 3.0 /TLS 1.0 i uniemożliwia korzystanie z protokołu TLS 1.2.

Nie należy ustawiać wartości właściwości SecurityProtocol (dla sieci HTTP).

Nie używaj przeciążeń metody , SslStream które używają jawnego parametru SslProtocols (dla sieci gniazd TCP). Po przekierowywaniu aplikacji do wersji 4.7 lub nowszej .NET Framework 4.7, będzie się dzieje zgodnie z zaleceniami najlepszych rozwiązań.

Pozostała część tego tematu nie ma znaczenia w przypadku określania wartości docelowej .NET Framework 4.7 lub nowszych dla sieci gniazd TCP.

Transport TCP programu WCF przy użyciu zabezpieczeń transportu z poświadczeniami certyfikatu

Program WCF używa tego samego stosu sieciowego co pozostałe .NET Framework.

W przypadku określania wartości docelowej 4.7.1 program WCF jest skonfigurowany tak, aby umożliwić systemowi operacyjnego wybór najlepszego protokołu zabezpieczeń domyślnie, chyba że jawnie skonfigurowano:

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

Domyślnie system .NET Framework 4.7 lub nowszy jest skonfigurowany do korzystania z wersji TLS 1.2 i zezwala na połączenia przy użyciu wersji TLS 1.1 lub TLS 1.0. Skonfiguruj usługę WCF, aby umożliwić systemowi operacyjnego wybór najlepszego protokołu zabezpieczeń, konfigurując powiązanie do używania protokołu SslProtocols.None . Tę wartość można ustawić na SslProtocols . SslProtocols.None Można uzyskać dostęp z Transport . NetTcpSecurity.Transport Można uzyskać dostęp z Security .

Jeśli używasz powiązania niestandardowego:

  • Skonfiguruj usługę WCF, aby umożliwić systemowi operacyjnego wybór najlepszego protokołu zabezpieczeń, ustawiając SslProtocols opcję na używanie protokołu SslProtocols.None .
  • Możesz też skonfigurować protokół używany ze ścieżką konfiguracji system.serviceModel/bindings/customBinding/binding/sslStreamSecurity:sslProtocols .

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

W przypadku zabezpieczeń komunikatów WCF przy użyciu poświadczeń certyfikatu

.NET Framework 4.7 i nowsze domyślnie używa protokołu określonego we właściwości SecurityProtocol . Gdy przełącznik AppContextSwitch jest ustawiony na wartość , usługa WCF wybiera najlepszy protokół, maksymalnie Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols true TLS 1.0.

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

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

W .NET Framework 4.6–4.6.2, a nie WCF

Ustaw przełącznik DontEnableSystemDefaultTlsVersions AppContext na wartość false . Zobacz Konfigurowanie zabezpieczeń za pomocą przełączników AppContext.

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

Należy zainstalować najnowsze poprawki systemu operacyjnego. Zobacz Aktualizacje zabezpieczeń.

Program 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ę Transport TCP programu WCF przy użyciu zabezpieczeń transportu z poświadczeniami certyfikatu.

W .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żna uaktualnić, należy wykonać następujące czynności.

Ustaw klucze rejestru SchUseStrongCrypto i SystemDefaultTlsVersions na wartość 1. Zobacz Konfigurowanie zabezpieczeń za pośrednictwem Windows rejestru. Wersja .NET Framework 3.5 obsługuje flagę tylko wtedy, gdy SchUseStrongCrypto zostanie przekazana jawna wartość TLS.

Jeśli używasz programu w .NET Framework 3.5, musisz zainstalować gorącą poprawkę, aby program określał TLS 1.2:

KB3154518 Reliability Rollup HR-1605 - Support for TLS System Default Versions included in the .NET Framework 3.5.1 on Windows 7 SP1 and Server 2008 R2 SP1
KB3154519 Reliability Rollup HR-1605 - Support for TLS System Default Versions included in the .NET Framework 3.5 on Windows Server 2012
KB3154520 Reliability Rollup HR-1605 -Support for TLS System Default Versions included in the .NET Framework 3.5 on Windows 8.1 and Windows Server 2012 R2
KB3156421 1605 Hotfix rollup 3154521 for the .NET Framework 4.5.2 and 4.5.1 on Windows

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

Te wersje struktury WCF są na trwałe kodowane do używania wartości SSL 3.0 i TLS 1.0. Tych wartości nie można zmienić. Aby korzystać z wersji TLS 1.1 i 1.2, należy zaktualizować program NET Framework 4.6 lub nowszy i przekierowyć go do tego programu.

Jeśli aplikacja jest .NET Framework 3.5

Jeśli musisz jawnie ustawić protokół zabezpieczeń, zamiast pozwolić platformie .NET lub systemowi operacyjnego na wybór protokołu zabezpieczeń, dodaj i wyliczenia SecurityProtocolTypeExtensions SslProtocolsExtension do kodu. SecurityProtocolTypeExtensions i SslProtocolsExtension zawierają wartości dla wartości , i Tls12 Tls11 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 wersji .NET Framework 3.5 na platformie Windows 8.1 i Windows Server 2012 R2).

Konfigurowanie zabezpieczeń za pomocą przełączników AppContext (dla .NET Framework 4.6 lub nowszych)

Przełączniki AppContext opisane w tej sekcji są istotne, jeśli aplikacja jest uruchamiana w wersji .NET Framework 4.6 lub nowszej. Przełączniki powinny być domyślnie lub jawnie ustawiane, jeśli jest false to możliwe. Jeśli chcesz skonfigurować zabezpieczenia za pomocą jednego lub obu przełączników, nie określaj wartości protokołu zabezpieczeń w kodzie; Takie działania zastąpią przełączniki.

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

Switch.System.Net.DontEnableSchUseStrongCrypto

Wartość dla false Switch.System.Net.DontEnableSchUseStrongCrypto powoduje, że aplikacja używa silnej kryptografii. Wartość dla programu używa bezpieczniejszych protokołów false DontEnableSchUseStrongCrypto sieciowych (TLS 1.2, TLS 1.1 i TLS 1.0) oraz blokuje protokoły, które nie są bezpieczne. Aby uzyskać więcej informacji, zobacz Flaga SCH_USE_STRONG_CRYPTO . Wartość wyłącza true silną kryptografię dla aplikacji.

Jeśli aplikacja jest .NET Framework wersji 4.6 lub nowszej, ten przełącznik domyślnie ma wartość false . Jest to bezpieczna wartość domyślna, którą zalecamy. Jeśli aplikacja działa w wersji .NET Framework 4.6, ale jest przeznaczony dla starszej wersji, wartość domyślna przełącznika to true . W takim przypadku należy jawnie ustawić ją na false wartość .

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

Switch.System.Net.DontEnableSystemDefaultTlsVersions

Wartość dla false Switch.System.Net.DontEnableSystemDefaultTlsVersions powoduje, że aplikacja zezwala systemowi operacyjneowi na wybranie protokołu. Wartość true powoduje, że aplikacja używa protokołów wybieranych przez .NET Framework.

Jeśli aplikacja jest .NET Framework wersji 4.7 lub nowszej, ten przełącznik domyślnie ma wartość false . Jest to bezpieczna wartość domyślna, która jest zalecane. Jeśli aplikacja działa w wersji .NET Framework 4.7 lub nowszej, ale dotyczy starszej wersji, przełącznik domyślnie ma wartość true . W takim przypadku należy jawnie ustawić ją na false wartość .

Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols

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

W przypadku aplikacji .NET Framework 4.7 i nowszych ta wartość jest domyślnie wartością false . W przypadku aplikacji .NET Framework 4.6.2 i starszych ta wartość domyślna to true .

Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions

Wartość dla false ustawia Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions domyślną konfigurację, aby umożliwić systemowi operacyjnej wybranie protokołu. Wartość ustawia domyślnie najwyższy dostępny protokół, maksymalnie true TLS1.2.

W przypadku aplikacji .NET Framework 4.7.1 i nowszych ta wartość jest domyślnie wartością false . W przypadku aplikacji .NET Framework 4.7 i starszych ta wartość domyślna to true .

Aby uzyskać więcej informacji na temat protokołów TLS, zobacz Mitigation: TLS Protocols (Środki zaradcze: protokoły TLS). Aby uzyskać więcej informacji na AppContext temat przełączników, zobacz <AppContextSwitchOverrides> Element .

Konfigurowanie zabezpieczeń za pośrednictwem usługi Windows Registry

Ostrzeżenie

Ustawienie kluczy rejestru ma wpływ na wszystkie aplikacje w systemie. Użyj tej opcji tylko wtedy, gdy masz pełną kontrolę nad maszyną i możesz kontrolować zmiany w rejestrze.

Jeśli ustawienie jednego lub obu przełączników nie jest opcją, możesz kontrolować protokoły zabezpieczeń używane przez aplikację za pomocą kluczy rejestru Windows opisanych w AppContext tej sekcji. Użycie jednego lub obu przełączników może nie być możliwe, jeśli aplikacja działa w wersji .NET Framework 4.5.2 lub starszej albo jeśli nie można edytować AppContext pliku konfiguracji. Jeśli chcesz skonfigurować zabezpieczenia za pomocą rejestru, nie określaj wartości protokołu zabezpieczeń w kodzie; Powoduje to przesłonięcie ustawienia rejestru.

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

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

Wszystkie klucze rejestru opisane poniżej mają taki sam wpływ, niezależnie od tego, czy używasz sieci HTTP ( ) lub ServicePointManager 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) i blokuje protokoły, które nie są bezpieczne. Wartość 0 wyłącza silną kryptografię. Aby uzyskać więcej informacji, zobacz Flaga SCH_USE_STRONG_CRYPTO .

Jeśli aplikacja jest .NET Framework wersji 4.6 lub nowszej, ten klucz domyślnie ma wartość 1. Jest to bezpieczna wartość domyślna, która jest zalecane. Jeśli aplikacja jest .NET Framework w wersji 4.5.2 lub starszej, wartość domyślna klucza to 0. W takim przypadku należy jawnie ustawić jego wartość na 1.

Ten klucz powinien mieć wartość 0 tylko wtedy, gdy konieczne jest 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 operacyjneowi na wybranie protokołu. Wartość 0 powoduje, że aplikacja używa protokołów wybieranych przez .NET Framework.

<VERSION>musi być w wersji 4.0.30319 (dla wersji .NET Framework 4 lub 4 lub 2.0.50727 (w przypadku wersji .NET Framework 3.5).

Jeśli aplikacja jest .NET Framework wersji 4.7 lub nowszej, ten klucz domyślnie ma wartość 1. Jest to bezpieczna wartość domyślna, która jest zalecane. Jeśli aplikacja jest .NET Framework w wersji 4.6.1 lub starszej, wartość domyślna klucza to 0. W takim przypadku należy jawnie ustawić jego wartość na 1.

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

Aby uzyskać więcej informacji na temat wersji .NET Framework 3.5.1, zobacz Obsługa domyślnych wersji systemu TLS zawartych w programie .NET Framework 3.5.1 w wersji Windows 7 z dodatkiem SP1 i Server 2008 R2 z dodatkiem SP1.

Poniżej przedstawiono . Plik REG ustawia klucze rejestru i ich warianty na najbardziej bezpieczne 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 Windows Registry

Rejestru można używać do precyzyjnej kontroli protokołów negocjowanych przez klienta i/lub aplikację serwera. Sieć aplikacji przechodzi przez kanał Schannel (jest to inna nazwa dla bezpiecznego kanału). Konfigurując Schannel usługę , można skonfigurować zachowanie aplikacji.

Rozpocznij od HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols klucza rejestru. Pod tym kluczem można utworzyć wszystkie podklucze w zestawie SSL 2.0 , , , i SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2 . Pod każdym z tych podkluczy można utworzyć Client podklucze i/lub Server . W Client obszarze i można utworzyć wartości Server DWORD DisabledByDefault (0 lub 1) i Enabled (0 lub 1).

Flaga SCH_USE_STRONG_CRYPTO flagi

Gdy ta funkcja jest włączona (domyślnie, przez przełącznik lub rejestr Windows), .NET Framework używa flagi , gdy aplikacja żąda protokołu AppContext SCH_USE_STRONG_CRYPTO zabezpieczeń TLS. Flagę SCH_USE_STRONG_CRYPTO można włączyć domyślnie za pomocą AppContext przełącznika lub rejestru. System operacyjny przekazuje flagę do elementu w celu poinstruowania go o wyłączeniu znanych słabych algorytmów kryptograficznych, mechanizmów szyfrowania i wersji protokołu TLS/SSL, które w przeciwnym razie mogą być włączone w celu zapewnienia lepszego Schannel współdziałania. Aby uzyskać więcej informacji, zobacz:

Flaga jest również przekazywana do funkcji w przypadku jawnego użycia SCH_USE_STRONG_CRYPTO Schannel Tls (TLS 1.0), Tls11 , lub Tls12 SecurityProtocolType wyliczenia wartości lub SslProtocols .

Aktualizacje zabezpieczeń

Najlepsze rozwiązania w tym artykule zależą od najnowszych instalowanych aktualizacji zabezpieczeń. Te aktualizacje obejmują możliwość korzystania z zaawansowanych .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 dotyczy starszej wersji).

Aby zaktualizować .NET Framework, aby umożliwić systemowi operacyjnej wybranie najlepszej wersji zabezpieczeń TLS, należy zainstalować co najmniej:

Zobacz też:

Obsługa protokołu TLS 1.2

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

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

Aby włączyć lub ponownie włączyć obsługę zabezpieczeń TLS 1.2 i/lub TLS 1.1 w systemie, który je obsługuje, zobacz Transport Layer Security (TLS) registry settings (Ustawienia rejestru TLS).

System operacyjny Obsługa TLS 1.2
Windows 10
Windows Server 2016
Obsługiwane i domyślnie włączone.
Windows 8.1
Windows Server 2012 z dodatkiem R2
Obsługiwane i domyślnie włączone.
Windows 8.0
Windows Server 2012
Obsługiwane i domyślnie włączone.
Windows 7 z dodatkiem SP1
Windows Server 2008 R2 SP1
Obsługiwane, ale domyślnie niewłączona. Aby uzyskać szczegółowe informacje na temat włączania usługi TLS 1.2, zobacz stronę internetową ustawień rejestru usługi Transport Layer Security (TLS).
Windows Server 2008 Obsługa zabezpieczeń TLS 1.2 i TLS 1.1 wymaga aktualizacji. Zobacz aktualizacja, aby dodać obsługę TLS 1.1 i TLS 1.2 w 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 usługi Windows, zobacz Protokoły w protokołach TLS/SSL (Schannel SSP).

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, która będzie potrzebna do obsługi wersji TLS 1.2 z .NET Framework 3.5. Zalecamy zastosowanie wszystkich aktualizacji systemu operacyjnego.

System operacyjny Minimalna aktualizacja wymagana do obsługi wersji TLS 1.2 z .NET Framework 3.5
Windows 10
Windows Server 2016
Aktualizacja zbiorcza dla Windows 10 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 wersji .NET Framework 3.5 na Windows 8.1 i Windows Server 2012 R2
Windows 8.0
Windows Server 2012
Obsługa domyślnych wersji systemu TLS uwzględnionych w .NET Framework 3.5 na Windows Server 2012
Windows 7 z dodatkiem SP1
Windows Server 2008 R2 SP1
Obsługa domyślnych wersji systemu TLS zawartych w wersji .NET Framework 3.5.1 w wersjach Windows 7 SP1 i Server 2008 R2 SP1
Windows Server 2008 Obsługa domyślnych wersji systemu TLS zawartych w wersji .NET Framework 2.0 SP2 w systemach Windows Vista SP2 i Server 2008 SP2
Windows Vista Nieobsługiwane