为了账号安全,请及时绑定邮箱和手机立即绑定

.NET 4.5中的默认安全协议

/ 猿问

.NET 4.5中的默认安全协议

慕的地8271018 2019-06-25 13:49:25

.NET 4.5中的默认安全协议

与支持以下内容的服务器通信的默认安全协议是什么?TLS 1.2?将要.NET默认情况下,选择服务器端支持的最高安全协议,或者必须显式添加以下代码:

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

除了代码更改之外,还有其他方法来更改此默认设置吗?

最后,是否.NET 4.0只能支持到TLS 1.0?也就是说,我必须将客户项目升级到4.5以支持TLS 1.2.

我的动机是消除对SSLv3在客户端,即使服务器支持它(我已经有一个Powershell脚本在机器注册表中禁用它),并支持服务器支持的最高TLS协议。

最新情况:看着ServicePointManager.NET 4.0我没有看到TLS 1.01.1..两种.NET 4.0/4.5,默认为SecurityProtocolType.Tls|SecurityProtocolType.Ssl3..希望此默认设置不会因禁用而中断SSLv3在登记处。

然而,我已经决定我必须升级所有的应用程序.NET 4.5并显式地添加SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;无论如何,所有应用程序的引导代码。

这将使对各种api和服务的出站请求不降级为SSLv3并且应该选择最高级别的TLS.

这种做法听起来合理还是过分?我有许多应用程序需要更新,而且我希望将来能对它们进行验证,因为我甚至听说了。TLS 1.0在不久的将来可能会被一些供应商所反对。

作为向API发出出站请求的客户端,禁用注册表中的ssl 3在.NET框架中是否有影响?我看到默认情况下,TLS 1.1和1.2没有启用,我们必须通过注册表启用它吗?Rehttp://support.microsoft.com/kb/245030.

经过一番调查,我相信注册表设置不会有任何影响,因为它们适用于IIS(服务器子项)和浏览器(客户端子项)。

很抱歉,这篇文章变成了多个问题,然后是“也许”的答案。



查看完整描述

3 回答

?
LEATH

一些留言者已经注意到System.Net.ServicePointManager.SecurityProtocol对于特定的值,意味着您的应用程序将无法利用将来可能成为.NET更新中的默认值的TLS版本。与其指定固定的协议列表,不如打开或关闭您所知道和关心的协议,保留任何其他协议。

在不影响其他议定书的情况下打开TLS 1.1和1.2:

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

注意使用|=打开这些旗子而不把其他人关掉。

在不影响其他协议的情况下关闭ssl 3:

System.Net.ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3;


查看完整回答
反对 回复 2019-06-25
?
慕田峪4524236

默认System.Net.ServicePointManager.SecurityProtocol在两个.NET中4.0/4.5SecurityProtocolType.Tls|SecurityProtocolType.Ssl3.

.NET 4.0支持到TLS 1.0.NET 4.5支持到TLS 1.2

但是,应用程序的目标是.NET 4.0仍然可以支持TLS 1.2如果.NET 4.5安装在相同的环境中。.NET 4.5安装在.NET 4.0,替换System.dll.

我通过观察流量中正确的安全协议来验证这一点fiddler4中的枚举值进行手动设置。.NET 4.0项目:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 |(SecurityProtocolType)768 | (SecurityProtocolType)3072;

参考资料:

namespace System.Net{
    [System.Flags]
    public enum SecurityProtocolType
    {
       Ssl3 = 48,
       Tls = 192,
       Tls11 = 768,
       Tls12 = 3072,
    }}

如果您只在.NET 4.0安装后,您将得到异常:

未处理的异常:System.NotSupportdException:不支持所请求的安全协议。在System.Net.ServicePointManager.set_SecurityProtocol(SecurityProtocolType诉alue)

但是,我不推荐这种“黑客”,因为将来的修补程序等可能会破坏它。

因此,我决定了删除对SSLv3是:

  1. 将所有应用程序升级到

    .NET 4.5

  2. 将以下内容添加到引导代码中,以覆盖默认和未来的证明:

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

*如果这次黑客攻击是错误的,有人会纠正我,但我认为最初的测试是有效的。


查看完整回答
反对 回复 2019-06-25
?
慕用2447696

可以在以下注册表中重写默认行为:

Key  : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 Value: SchUseStrongCryptoType: REG_DWORDData : 1

Key  : HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319Value: SchUseStrongCryptoType: REG_DWORDData : 1

有关详情,请参阅执行ServicePointManager.


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 284 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信