Протокол 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.

registry


внесите следующие изменения в свой реестр, и он должен работать:

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 to DWORD 1

I код в VB и смог добавить следующую строку в мой глобальный.асакс.VB файл внутри Application_Start

ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)    'TLS 1.2

Я встречаю ту же проблему на установленной Windows .NET Framework 4.0.
И я решил эту проблему, установив .NET Framework 4.6.2.
Или вы можете скачать новейший пакет, чтобы попробовать.