当前位置: 首页 > 编程语言 > C#

为什么不同机器上ServicePointManager.SecurityProtocol的默认值不一样?分享

时间:2023-04-10 20:41:37 C#

为什么不同机器上ServicePointManager.SecurityProtocol的默认值不一样?目前我有一个问题,我找不到一个严格的答案。我有针对4.6.1框架的ASP.NETMVC5应用程序,该框架旨在使用受TLS1.1/TLS1.2协议保护的第3方API。我正在尝试在2种环境中运行我的应用程序:问题是当我在本地启动它时,ServicePointManager.SecurityProtocol默认设置为Ssl3,Tls,因此我无法针对API并且必须在应用程序启动时执行此操作编码以使用TLS1.1/TLS1.2:ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls11|安全协议类型.Tls12ServicePointManager.SecurityProtocol=安全协议类型.Tls11|安全协议类型.Tls12。当应用程序在服务器上运行时,默认的ServicePointManager.SecurityProtocol设置为Tls,Tls11,Tls12,所以它工作正常。根据文档,在.NETFramework4.6或更高版本上运行的应用程序必须默认使用TLS1.1/TLS1.2,它在远程机器上的工作方式。为什么ServicePointManager.SecurityProtocol的默认值不同?是因为.NETFramework配置吗?也可能是注册表设置,我已经搜索遍了,但找不到答案。MSDN:ServicePointManager.SecurityProtocol属性:请注意,没有为此属性列出默认值。安全形势在不断变化,默认协议和保护级别会随着时间的推移而变化,以避免已知的弱点。默认值会根据个人计算机配置、安装的软件和应用的补丁而有所不同。MSDN博客:Windows上对SSL/TLS协议的支持:在Windows上,对SSL/TLS协议的支持与SCHANNEL组件相关联。因此,如果特定操作系统版本不支持SSL/TLS版本,则意味着它仍然不受支持。MSDN:CipherSuitesinTLS/SSL(SchannelSSP)不同的Windows版本支持不同的TLS密码套件和优先顺序。有关MicrosoftSchannel提供商选择它们的默认顺序,请参阅相应的Windows版本。换句话说:这取决于您的Windows版本及其补丁级别。但是就像@Damien所说的那样,您为什么要为默认级别烦恼呢?我们可以更新下面的注册表,让.Net框架使用TLS1.1TLS1.2,需要重启。我试了一下,我机器上ServicePointManager.SecurityProtocol的值从“Ssl3,Tls”变成了“Tls,Tls11,Tls12”:的机器?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——[HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkv4.0.30319]"SchUseStrongCrypto"=dword:00000001[HKEY_LOCAL_MACHINESOFTWAREWow6432Node]C"SchUseStrong《强》=dword:00000001本文采集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,转载请注明出处: