在最新更新的 Windows 系统中使用 .net 程序调用一些 https 接口时出现错误:请求被中止: 未能创建 SSL/TLS 安全通道

发布时间 2023-08-09 10:20:31作者: 不是豆豆

这是因为出于安全原因,新更新的系统中会默认禁用一些已经过时不安全的加密协议

如:SSL 3.0、TLS 1.0、TLS 1.1 等

但并不是所有接口服务器都已经更新支持了更新的协议

所以在确认安全的情况下,可以将这些旧的协议再次启用,以达到兼容旧接口调用的目的

方法1:

注意:这个修改会在系统全局范围内影响生效,所以需要考虑影响范围

打开“Internet 选项”控制面板,找到“高级”选项卡

将“安全”结点下的“使用 SSL 3.0”、“使用 TLS 1.0” 等项目勾选上

确定保存后重启系统即可

方法2:

注意:这个修改会在 .net 程序中全局生效,不影响系统其它应用程序,但因为是显式指定,如果加密协议后续有增加,也需要在此同样进行手动增加

在 .net 程序项目中,在调用接口之前,全局指定所需要使用的加密协议:

// 指定请求可使用的加密协议,如果不知道当前项目是因为哪个版本出了问题,可以考虑都加上
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.SystemDefault | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;

请根据实际情况进行配置

参考:https://www.cnblogs.com/Can-daydayup/p/14609089.html

https://learn.microsoft.com/zh-cn/dotnet/api/system.net.securityprotocoltype