Протокол TLS 1.2 основы in.NET 4.0
У меня есть сервер Windows server 2008 R2 с десятком приложений .NET Framework 4.0 WebForms, и мне нужно отключить TLS 1.0 и ниже. Когда я это делаю, все безопасные соединения терпят неудачу, и я был вынужден повторно включить TLS 1.0. Есть ли способ использовать TLS 1.2 в среде framework 4.0? Может быть, я что-то упускаю?
кроме того, из-за ограничений версии CMS, которую мы используем, мы не можем обновить фреймворк в это время.
6 ответов
единственный способ, который я нашел, чтобы изменить это непосредственно на коде:
в самом начале вашего приложения вы установили
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
вы должны включить system.net
класс
Я сделал это перед вызовом веб-службы, потому что нам тоже пришлось блокировать tls1.
если вы не можете добавить свойство к system.net
библиотека классов.
затем добавляем глобальные.асакс:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768; //TLS 1.1
и вы можете использовать его в функции, в начальной строке:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
и это полезно для STRIPE
платежный шлюз, который поддерживает только TLS 1.1, TLS 1.2.
EDIT:
После стольких вопросов на .NET 4.5 установлен на моем сервере или нет... вот скриншот Registry
на мой производственный сервер:
у меня установлен только .NET framework 4.0.
внесите следующие изменения в свой реестр, и он должен работать:
1.) .NET Framework сильная криптография ключи реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
2.) безопасный канал (Schannel) TLS 1.2 ключи реестра
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
По данным этой, вам понадобится .NET 4.5 установлен. Для получения более подробной информации посетите веб-страницу. Суть в том, что после установки .NET 4.5 ваши приложения 4.0 будут использовать систему 4.5.файл DLL. Вы можете включить TLS 1.2 двумя способами:
- в начале приложения, добавьте следующий код:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
- установить ключ реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319: SchUseStrongCrypto
toDWORD 1
I код в VB и смог добавить следующую строку в мой глобальный.асакс.VB файл внутри Application_Start
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) 'TLS 1.2
Я встречаю ту же проблему на установленной Windows .NET Framework 4.0.
И я решил эту проблему, установив .NET Framework 4.6.2.
Или вы можете скачать новейший пакет, чтобы попробовать.