Program .NET Framework w wersji 3.5.1 i wcześniejszych wersjach nie obsługił aplikacji używania domyślnych wersji TLS (Transport Layer Security) jako protokołu kryptograficznego. Ta aktualizacja umożliwia korzystanie z TLS w wersji 1.2 w .NET Framework 3.5.1.
Uwaga Ta zawartość została już dostępna w Windows aktualizacji. Aby uzyskać tę zawartość, zeskanuj aktualizację Windows, aby uzyskać najnowsze .NET Framework aktualizacje. Jeśli Twój system jest w pełni aktualny za pośrednictwem Windows, nie musisz nic więcej robić.
Rozwiązanie
Informacje dotyczące pobierania
Poprawka odpowiadająca aktualizacji KB3154518 została zasypowana najnowszymi aktualizacjami programu .NET Framework, które zawierają wszystkie poprawki, które zostały wcześniej uwzględnione w aktualizacji KB3154518. Zalecane jest zainstalowanie najnowszych aktualizacji pakietu .NET Framework. W tym obszarze wprowadzono następujące ulepszenia:
-
Poniższe klucze rejestru można skonfigurować tak, aby używać domyślnych wartości systemu operacyjnego dla protokołów SSL i TLS zamiast kodów .NET Framework wartości domyślnych dla zarządzanej aplikacji uruchomionej na komputerze.
-
Dla 64-bitowych systemów operacyjnych:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 -
Dla 32-bitowych systemów operacyjnych:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Uwaga Jeśli aplikacja ustawiła wartość ServicePointManager.SecureProtocol w kodzie lub za pośrednictwem plików konfiguracji na określoną wartość lub używa interfejsów API SslStream.AuthenticateAs*, aby określić określone wyliczanie SslProtocols, zachowanie ustawień rejestru nie występuje.
-
-
Ponadto dodaliśmy wyliczenie SslProtocolsExtensions, które może być wykorzystać jako opcja ustawiania wartości TLS w wersji 1.2, TLS w wersji 1.1, a także dla właściwości ServicePointManager.SecurityProtocol domyślnego systemu operacyjnego dla właściwości ServicePointManager.SecurityProtocol w przypadku określania docelowych wartości .NET Framework w wersji 2.0 SP2. (Zobacz sekcję Wskazówki dla deweloperów, aby uzyskać informacje na temat używania rozszerzeń).
Uwaga Windows Vista z dodatkiem SP2 i Windows Server 2008 z dodatkiem SP2 nie obsługują wersji protokołu Transport Layer Security (TLS) nowszych niż 1.0. Zarządzane aplikacje z dodatkiem SP2 dla systemu .NET Framework .NET Framework 2.0 działające w systemie Windows Vista z dodatkiem SP2 lub Windows Server 2008 z dodatkiem SP2 nie mogą używać protokołu TLS 1.2 ani TLS 1.1, nawet jeśli te protokoły są ustawione we właściwości ServicePointManager.SecurityProtocol.
Aby uzyskać więcej informacji na temat pobierania plików pomocy technicznej firmy Microsoft, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:
119591 Jak uzyskać pliki pomocy technicznej firmy Microsoft z usług online Firma Microsoft przeskanowała ten plik pod kątem wirusów. Firma Microsoft używa najnowszego oprogramowania do wykrywania wirusów, które było dostępne w dniu publikacji pliku. Plik jest przechowywany na serwerach z zabezpieczeniami, które pomagają zapobiec nieautoryzowanym zmianom w pliku.
Wskazówki dla deweloperów
Definicja nowych rozszerzeń znajduje się w następujących plikach:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ za pomocą funkcji System.Security.Authentication; public static class SecurityProtocolTypeExtensions { const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12; const SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11; const SecurityProtocolType SystemDefault = (SecurityProtocolType)0; } } -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{ publiczna klasa statyczna SslProtocolsExtensions { const Public SslProtocols Tls12 = (SslProtocols)0x00000C00; const Publiczny SslProtocols Tls11 = (SslProtocols)0x00000300; } }
Aby uwzględnić obsługę protokołu TLS w wersji 1.2, uwzględnij pliki źródłowe w projekcie, a następnie ustaw wersję protokołu przy użyciu następujących metod:
-
Aplikacje korzystające z interfejsów API opartych na usłudze ServicePointManager mogą ustawiać protokół, korzystając z następujących funkcji:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Aplikacje korzystające z nadmiaru SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) można ustawić wartość SslProtocols jako SslProtocolsExtensions.Tls12.
Jeśli ustawienie rejestru, o którym wspomniano w pierwszym akapicie, jest ustawione, a wartość SslProtocols jest ustawiona w aplikacji jako SslProtocols.None, domyślne zachowanie systemu, które zostanie wybrane, zależy od wersji Windows.
Ponadto w przypadku zmiany kodu aplikacji w celu włączenia obsługi TLS 1.2 z dodatkiem .NET Framework 3.5 z dodatkiem SP1 należy się upewnić, że w przypadku komputerów, na których nie wdrożono tej poprawki, należy odłączyć się od następujących wyjątków:-
Jeśli poprawka nie jest zainstalowana, interfejsy API oparte na usłudze ServicePointManager (HTTP, FTP, SMTP) będą zgłaszać błąd "System.NotSupportedException: Żądany protokół zabezpieczeń nie jest obsługiwany", gdy aplikacja wywoła usługę ServicePointManager.SecurityProtocol, aby ustawić nową wartość.
-
Jeśli poprawka nie jest zainstalowana, interfejsy API oparte na technologii SslStream zgłasza wyjątki, gdy wywołują one jeden z interfejsów API uwierzytelniania*:
System.ArgumentException: Określona wartość jest prawidłowa w wyliczeniu "SslProtocolType".
Nazwa parametru: sslProtocolType
Uwaga Tylko dla protokołu SslStream: połączenie protokołu Tls12, Tls11 z dowolnym z istniejących Tls, Ssl3, Ssl2 (na przykład: Tls12 | Tls11 | Tls) dyskretnie obniży poziom do istniejących protokołów (na przykład Tls) w systemie bez poprawki. Spowoduje to połączenie z tls bez zgłaszania wyjątku.
Więcej informacji
Aby włączyć obsługę standardu TLS w wersji 1.1 lub 1.2 jako domyślnego systemu operacyjnego, postępuj zgodnie z instrukcjami podanymi na stronie https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Uwaga W systemach Windows 1.1 i 1.2 usługi TLS nie są dostępne w systemach Windows Vista Windows Server 2008. Jeśli musisz wyłączyć ustawienia domyślne systemu operacyjnego ustawiane przez klucz rejestru wymieniony w sekcji "Rozdzielczość" dla określonych aplikacji, możesz to zrobić, dodając następujący klucz rejestru:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Pełna ścieżka pliku .exe pliku>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Aby uzyskać więcej informacji na temat TLS w wersji 1.2, zobacz Wprowadzenie do TLS w wersji 1.2. Po włączeniu klucza rejestru .NET systemuDefaultTlsVersions dla każdej wersji programu Windows występuje inne zachowanie, jak pokazano w poniższej tabeli.
Windows wersji |
Klient SSL2 |
SSL2 Server |
Klient SSL3 |
SSL3 Server |
Klient TLS 1.0 |
TLS 1.0 Server |
Klient TLS 1.1 |
TLS 1.1 Server |
Klient TLS 1.2 |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista z dodatkiem SP2 Windows Server 2008 z dodatkiem SP2 |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Nie ma na to |
Nie ma na to |
Nie ma na to |
Nie ma na to |
Windows 7 z dodatkiem SP1 i Windows Server 2008 R2 z dodatkiem SP1 |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wyłączone |
Wyłączone |
Wyłączone |
Wyłączone |
Windows Server 2012 |
Wyłączone |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Windows 8.1 i Windows Server 2012 R2 |
Wyłączone |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Windows 10 |
Wyłączone |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Windows 10 (1511) |
Wyłączone |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Windows 10 (1607) i Windows Server 2016 |
Nie ma na to |
Nie ma na to |
Wyłączone |
Wyłączone |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |
Wł. |