.NET 4.5(或4.5.1)是否能够与安全协议无关?

时间:2016-04-26 21:00:07

标签: c# asp.net .net ssl tls1.2

我阅读了this post关于.NET中的安全协议配置 - 很棒的东西,got me unstuck

这篇文章是TL; DR,我在linked post中遇到的具体问题的通用版本。

我的问题是,是否可以配置ASP.NET应用程序,使其与协议无关?

在短期内,我可以添加此行

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;

让我的代码只为致力于TLS的客户端工作,但是将来我需要在新协议出来时更新它。它是硬编码的,smelly

As I understand it,向ServicePointManager.SecurityProtocol集合添加值会以这样的方式配置.NET:如果一个协议失败,它将尝试重新协商连接。我希望它回到服务器配置上。

换句话说,我怎样才能配置我的ASP.NET应用程序,使其尊重IISCrypto所关注的注册表项所建立的安全协议配置?

1 个答案:

答案 0 :(得分:0)

我找到了removes the responsibility of security protocol configuration from our code and moves it to the registry

的解决方案

必要的更改是将"SchUseStrongCrypto"=dword:00000001值添加到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319密钥。

enter image description here

现在,我们的客户使用此代码来正确配置其环境的安全协议,并且无需对ServicePointManager.SecurityProtocol集合中的任何内容进行硬编码。