我阅读了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所关注的注册表项所建立的安全协议配置?
答案 0 :(得分:0)
必要的更改是将"SchUseStrongCrypto"=dword:00000001
值添加到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
密钥。
现在,我们的客户使用此代码来正确配置其环境的安全协议,并且无需对ServicePointManager.SecurityProtocol
集合中的任何内容进行硬编码。