Поскольку я только что обнаружил, что RFC 5425 требует использования TLS 1.2 и что .NET еще не поддерживает его, мне интересно, есть ли какая-либо реализация, возможно, с открытым исходным кодом, протокола TLS 1.2, как определено в RFC 5246.
Есть ли .NET-версия TLS 1.2?
Ответ 1
Просто обнаружил, что .Net Framework 4.5 теперь поддерживает TLSv1.2
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs.110).aspx
Ответ 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;