Есть ли реализация .NET TLS 1.2? - PullRequest
74 голосов
/ 09 ноября 2010

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

Ответы [ 10 ]

75 голосов
/ 24 марта 2015

Да, хотя вам нужно вручную включить 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 .

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

41 голосов
/ 26 июня 2012

Только что обнаружил, что .Net Framework 4.5 теперь поддерживает TLSv1.2
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs.110).aspx

27 голосов
/ 01 октября 2015

Вы можете использовать параметр реестра 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
12 голосов
/ 09 сентября 2016

Я исправил свою проблему, переключившись на последнюю версию .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
8 голосов
/ 27 июня 2016

Просто скачайте этот ключ реестра и запустите его. Это добавит необходимый ключ в реестр .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. «

8 голосов
/ 09 ноября 2010

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

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

4 голосов
/ 09 ноября 2010

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

3 голосов
/ 31 августа 2016

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

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

3 голосов
/ 09 ноября 2010

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

0 голосов
/ 14 марта 2018

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

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...