"未能创建 SSL/TLS 安全通道" 的错误通常是由于客户端(例如浏览器或应用程序)无法建立与服务器的安全连接而引起的。
这种错误通常与以下问题有关:
安全证书问题:安全证书可能已过期、无效或不受信任。这可能是因为证书颁发机构(CA)不被信任,或者证书中包含的信息与实际情况不符。
TLS/SSL配置问题:服务器的TLS/SSL配置可能不正确或过时,可能不支持客户端正在使用的加密协议或密码套件。
网络问题:可能存在网络问题,如防火墙阻止了连接、代理服务器配置不正确或DNS问题。
C# 中出现“请求被中止: 未能创建 SSL/TLS 安全通道”错误通常是由于您的代码中使用的默认协议是较旧的 SSL,而服务器要求使用更安全的 TLS 协议。要解决这个问题,您可以尝试以下方法:
使用较新的 TLS 协议:您可以通过设置 ServicePointManager.SecurityProtocol 属性来设置使用的协议。例如,您可以将其设置为 "SecurityProtocolType.Tls12",这将使用 TLS 1.2 协议来建立连接。
忽略证书验证:如果您知道您正在连接的服务器的证书是受信任的,您可以忽略证书验证。虽然这并不是最好的做法,但是可以通过设置 ServicePointManager.ServerCertificateValidationCallback 属性来实现。这将允许您手动验证证书,或者忽略证书错误。
更新 .NET Framework 版本:如果您使用的是旧版本的 .NET Framework,那么升级到较新版本可能会解决问题。在较新版本的 .NET Framework 中,默认的安全协议已经被更新为 TLS,因此您可能不会再遇到这个问题。
检查代理设置:如果您使用代理服务器连接到网络,则可能需要检查代理设置,以确保它们正确地处理 SSL/TLS 请求。
下面是一个示例代码片段,演示如何使用较新的 TLS 协议:
有两种方式
第一种:执行代码前,加上
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
第二种,加上这一段也行,这两种方式,选一种即可,如果出错,项目请切换到net4.5以上
//http加载证书,ssl,如果出错,就切换到net4.5
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
//http加载证书,ssl,如果出错,就切换到net4.5
就可以正常获取https链接的内容了,或者下载带有https链接的文件了
可以解决:
C# 未能创建 SSL/TLS 安全通道
C# 出现基础连接已经关闭:接收时发生错误
C#无法请求https链接的内容
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛