与最多支持TLS 1.2台的服务器通信的默认安全协议是什么?在默认情况下,.NET将 Select 服务器端支持的最高安全性协议,或者我是否必须显式添加以下代码行:

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

除了代码更改之外,还有什么方法可以更改这个默认值吗?

最后,.NET 4.0只支持TLS 1.0只吗?i、 e.我必须将客户项目升级到4.5以支持TLS 1.2.

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

Update: 查看.NET 4.0中的ServicePointManager类,我没有看到TLS 1.01.1的枚举值.在这两个.NET 4.0/4.5中,默认值均为SecurityProtocolType.Tls|SecurityProtocolType.Ssl3.希望这个默认设置不会因为在注册表中禁用SSLv3而被 destruct .

然而,我决定我必须将所有应用程序升级到.NET 4.5,并在所有应用程序的所有 bootstrap 代码中明确添加SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;.

这将使对各种API和服务的出站请求不会降级到SSLv3,并应 Select TLS的最高级别.

这种做法听起来是合理还是矫枉过正呢?我有很多应用程序要更新,我想要证明它们的future ,因为我听说甚至TLS 1.0个可能会在不久的将来被一些供应商弃用.

作为一个向API发出出站请求的客户端,在注册表中禁用SSL3是否会对客户端产生影响.NET框架?我知道默认情况下,TLS 1.1和1.2没有启用,我们必须通过注册表启用它吗?你http://support.microsoft.com/kb/245030岁.

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

很抱歉,这篇帖子变成了多个问题,后面跟着"可能"的答案.

推荐答案

一些在其他答案上留下 comments 的人指出,将System.Net.ServicePointManager.SecurityProtocol设置为特定值意味着你们的应用程序将无法利用future 的TLS版本,这些版本可能会在将来的更新中成为默认值.网不要指定固定的协议列表,而是执行以下操作:

For .NET 4.7 or later,不要设定System.Net.ServicePointManager.SecurityProtocol.默认值(SecurityProtocolType.SystemDefault)将允许操作系统使用其知道并已配置的任何版本,包括创建应用时可能不存在的任何新版本.

For earlier versions of .NET Framework,相反,你可以打开或关闭你知道和关心的协议,让其他协议保持原样.

要在不影响其他协议的情况下启用TLS 1.1和1.2,请执行以下操作:

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

请注意,使用|=可以在不关闭其他标志的情况下打开这些标志.

要在不影响其他协议的情况下关闭SSL3:

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

.net相关问答推荐

为什么在WinForm应用程序中创建组件类椭圆会在www.example.com中没有响应

CustomControl 计算自己的宽度和高度 - 使用 bounds.Height=0 调用 ArrangeOverride

无法加载文件或程序集 不支持操作. (来自 HRESULT 的异常:0x80131515)

Erlang 的让它崩溃的哲学 - 适用于其他地方吗?

在 WebApi 中需要 SSL?

AutoMapper 的替代品

InternalsVisibleTo 属性不起作用

Await 运算符只能在 Async 方法中使用

静态析构函数

Convert.ToBoolean 和 Boolean.Parse 不接受 0 和 1

如何制作通用类型转换函数

没有 @Html.Button !

当我们按下 Enter 键时启动的 WPF 文本框命令

如何将 XPath 与 XElement 或 LINQ 一起使用?

使用 XmlDocument 读取 XML 属性

获取磁盘上文件的大小

具有不同身份验证标头的 HttpClient 单个实例

在 IIS 中访问 .svc 文件时出现 HTTP 404

通过反射获取公共静态字段的值

为什么 IList 不支持 AddRange