Версиите на .NET framework, версия 3.5 и по-стари версии не предоставят поддръжка за приложенията за използване на версиите по подразбиране за защита на транспортния слой (TLS) като криптографски протокол. Тази актуализация разрешава използването на TLS v1.2 в .NET Framework (платформа) 3.5.
Забележка Това съдържание е достъпно на Windows Update. За да получите съдържанието, Windows Актуализирайте за най-новите .NET Framework (платформа) актуализации. Ако вашата система е напълно актуална чрез Windows, не е необходимо да предприемате по-нататъшни действия.
Решение
Изтегляне на информация
Актуалната корекция, която съответства на KB3154519, е заменена с най-новите актуализации на .NET Framework (платформа), които съдържат всички корекции, които преди това са били включени в KB3154519. Препоръчително е да инсталирате най-новите актуализации на .NET Framework (платформа). Направихме следните подобрения в тази област:
-
Следните ключове от системния регистър могат да бъдат настроени да използват операционната система по подразбиране за SSL и TLS вместо кодираните .NET Framework (платформа) по подразбиране за управлявано приложение, изпълнявано на компютъра.
-
За 64-битови операционни системи:[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 -
За 32-битови операционни системи:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Забележка Ако приложението е задали API на ServicePointManager.SecureProtocol в код или чрез конфигурационни файлове на определена стойност или използва API на SslStream.AuthenticateAs*, за да зададете конкретен анум на SslProtocols, поведението на настройката на системния регистър не възниква.
-
-
Освен това добавихме изброяването на SslProtocolsExtensions, което можете да използвате като опция за задаване на TLS v1.2, TLS v1.1, както и по подразбиране на операционната система за свойството ServicePointManager.SecurityProtocol при насочване към .NET framework версия 2.0 SP2. (Вижте раздела Указания за разработчици за информацията как да използвате разширенията.)
Забележка Windows Vista SP2 и Windows Server 2008 SP2 не поддържат версии на протокола за защита на транспортния слой (TLS), по-нови от 1,0. Управляваните .NET Framework (платформа) 2.0 SP2 приложения, изпълнявани на Windows Vista SP2 или Windows Server 2008 SP2, не могат да използват TLS 1.2 или TLS 1.1 дори ако тези протоколи са зададени в свойството ServicePointManager.SecurityProtocol.
За повече информация как да изтеглите файлове за поддръжка на Microsoft щракнете върху следния номер на статия в базата знания на Microsoft:
119591 Как да получите файлове за поддръжка на Microsoft от онлайн услуги, които Microsoft сканира този файл за вируси. Microsoft използва най-актуалния софтуер за откриване на вируси, който е бил наличен на датата на публикуване на файла. Файлът се съхранява на защитени сървъри, които помагат за предотвратяването на неупълномощени промени във файла.
Указания за разработчици
Дефиницията на новите разширения е в следните файлове:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ използване на System.Security.Authentication; публичен статичен клас SecurityProtocolTypeExtensions { публичен конст SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12; публичен конст SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11; публичен конст SecurityProtocolType SystemDefault = (SecurityProtocolType)0; } } -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{ публичен статичен клас SslProtocolsExtensions { публичен конст SslProtocols Tls12 = (SslProtocols)0x00000C00; публичен конст SslProtocols Tls11 = (SslProtocols)0x00000300; } }
За да включите поддръжката за TLS v1.2, включете файловете източник във вашия проект и след това задайте версията на протокола с помощта на следните методи:
-
Приложенията, които използват API на ServicePointManager, могат да задават протокола с помощта на следното:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Приложения, които използват SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) претоварване, могат да зададете стойността SslProtocols като SslProtocolsExtensions.Tls12.
Ако е зададена настройката на системния регистър, спомената в първия абзац, и стойността на SslProtocols е зададена в приложението като SslProtocols.None, поведението по подразбиране на системата, което е избрано, ще зависи от Windows версия.
Също така, когато промените кода на приложението, за да разрешите поддръжката за TLS v1.2 с .NET Framework (платформа) 3,5 SP1, трябва да се уверите, че разглеждате следните изключения на компютрите, на които тази корекция не е разположена:-
Ако актуалната корекция не е инсталирана, базираните на ServicePointManager API (HTTP, FTP, SMTP) ще хвърлят "System.NotSupportedException: Исканият протокол за защита не се поддържа", когато приложението извине ServicePointManager.SecurityProtocol, за да зададете новата стойност.
-
Ако актуалната корекция не е инсталирана, базираните на SslStream API ще хвърлят изключения, когато извикват някоя от API на AuthenticateAs*:
System.ArgumentException: Зададената стойност не е валидна в изброяването на "SslProtocolType".
Име на параметър: sslProtocolType
Забележка Само за SslStream – комбинация от Tls12, Tls11 с някой от съществуващите Tls, Ssl3, Ssl2 (например: Tls12 | Tls11 | Tls) ще се поничат мълчаливо към съществуващите протоколи (например: Tls) в система без корекцията. Той ще се свърже с TLS, без да хвърля изключението.
Повече информация
За да разрешите TLS v1.1 или v1.2 като операционна система по подразбиране, следвайте инструкциите в https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Забележка TLS v1.1 и v1.2 не са налични в Windows Vista или Windows Server 2008. Ако трябва да забраните настройките по подразбиране на операционната система, които са зададени от ключа на системния регистър, споменат в раздела "Решение" за определени приложения, можете да направите това, като добавите следния ключ от системния регистър:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Пълен път на .exe за файла>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
За повече информация относно TLS v1.2 вижте Въвеждане на TLS v1.2. След като разрешите ключа на системния регистър SystemDefaultTlsVersions .NET, възниква различно поведение за всяка версия на Windows, както е показано в таблицата по-долу.
Windows версия |
SSL2 клиент |
SSL2 сървър |
SSL3 клиент |
SSL3 сървър |
TLS 1.0 Клиент |
TLS 1.0 Сървър |
TLS 1.1 Клиент |
TLS 1.1 Сървър |
TLS 1.2 Клиент |
TLS 1.2 Сървър |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 и Windows Server 2008 SP2 |
Изкл. |
На |
На |
На |
На |
На |
N/A |
N/A |
N/A |
N/A |
Windows 7 SP1 и Windows Server 2008 R2 SP1 |
Изкл. |
На |
На |
На |
На |
На |
Изкл. |
Изкл. |
Изкл. |
Изкл. |
Windows Server 2012 |
Изкл. |
Изкл. |
На |
На |
На |
На |
На |
На |
На |
На |
Windows 8.1 и Windows Server 2012 R2 |
Изкл. |
Изкл. |
На |
На |
На |
На |
На |
На |
На |
На |
Windows 10 |
Изкл. |
Изкл. |
На |
На |
На |
На |
На |
На |
На |
На |
Windows 10 (1511) |
Изкл. |
Изкл. |
На |
На |
На |
На |
На |
На |
На |
На |
Windows 10 (1607) и Windows Server 2016 |
N/A |
N/A |
Изкл. |
Изкл. |
На |
На |
На |
На |
На |
На |