Есть ли .NET-версия TLS 1.2?

Поскольку я только что обнаружил, что RFC 5425 требует использования TLS 1.2 и что .NET еще не поддерживает его, мне интересно, есть ли какая-либо реализация, возможно, с открытым исходным кодом, протокола TLS 1.2, как определено в RFC 5246.

Ответ 2

Да, хотя вы должны включить TLS 1.2 вручную в System.Net.ServicePointManager.SecurityProtocol

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // comparable to modern browsers
var response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse();
var body = new StreamReader(response.GetResponseStream()).ReadToEnd();

Ваш клиент использует TLS 1.2, самую современную версию протокола шифрования


Из окна WebRequest будет использовать TLS 1.0 или SSL 3.

Ваш клиент использует             TLS 1.0, который очень старый, возможно восприимчивый             к атаке BEAST и не имеет лучшего шифрования             люксы доступны на нем. Дополнения, такие как AES-GCM и SHA256             для замены MD5-SHA-1 недоступны клиенту TLS 1.0             а также множество современных наборов шифров.

Ответ 3

Вы можете использовать параметр реестра SchUseStrongCrypto, чтобы все приложения .NET использовали по умолчанию TLS 1.2 вместо 1.0.

Windows Registry Editor Version 5.00

[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

Ответ 4

Я исправил свою проблему, переключившись на последнюю .Net Framework. Таким образом, ваша целевая платформа устанавливает ваш протокол безопасности.

если у вас есть это в Web.config

<system.web>
  <httpRuntime targetFramework="4.5"/>
</system.web>

вы получите это по умолчанию:

ServicePointManager.SecurityProtocol = Ssl3 | Tls

если у вас есть это в Web.config

<system.web>
  <httpRuntime targetFramework="4.6.1"/>
</system.web>

вы получите это по умолчанию:

ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls

Ответ 5

Если вы имеете дело со старыми версиями .NET Framework, то поддержка TLS 1.2 доступна в нашем продукте SecureBlackbox как на клиентском, так и на серверных компонентов. SecureBlackbox содержит собственную реализацию всех алгоритмов, поэтому не имеет значения, какая версия используемой платформы .NET(в том числе .NET CF) - у вас будет TLS 1.2 с последними дополнениями во всех случаях.

Обратите внимание, что SecureBlackbox обычно не добавляет TLS 1.2 к классам инфраструктуры - вместо этого вы должны явно использовать классы и компоненты SecureBlackbox.

Ответ 6

Просто скачайте этот ключ реестра и запустите его. Это добавит необходимый ключ в реестр .NET Framework. Вы можете получить больше информации по этой ссылке. Найдите "Вариант 2" в ".NET 4.5 до 4.5.2".

Reg файл добавляет следующее в реестр:

[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

Эта часть страницы полезна на случай, если она сломается:

".. включить TLS 1.2 по умолчанию без изменения исходного кода путем установки значения DWORD SchUseStrongCrypto в следующих двух разделах реестра равным 1, создавая их, если они не существуют:" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319 " и "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319". Хотя номер версии в этих разделах реестра равен 4.0.30319, платформы .NET 4.5, 4.5.1 и 4.5.2 также используют эти значения. Однако ключи реестра включат TLS 1.2 по умолчанию во всех установленных приложениях .NET 4.0, 4.5, 4.5.1 и 4.5.2 в этой системе. Поэтому рекомендуется проверить это изменение перед его развертыванием на рабочих серверах. также доступен в виде файла импорта реестра. Однако эти значения реестра не влияют на приложения .NET, которые устанавливают значение System.Net.ServicePointManager.SecurityProtocol. "

Ответ 7

В последней версии SSPI (в комплекте с Windows 7) реализована реализация TLS 1.2, которая может быть найдена в schannel.dll

Ответ 8

Вы можете включить TLS 1.2 в IIS, следуя этим инструкциям. Я предполагаю, что этого будет достаточно, если у вас есть приложение на основе ASP.NET, которое выполняется поверх IIS, хотя, похоже, оно не совсем соответствует вашим потребностям.

Ответ 9

В .NET Framework 4.6 по умолчанию используется TLS 1.2.

Кроме того, только хост-приложение должно быть в .NET 4.6, ссылки на библиотеки могут оставаться в более старых версиях.

Ответ 10

как уже упоминалось здесь, вы можете просто добавить эту строку

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;