HTTPS接口 无法建立SSL / TLS安全通道的解决方案 (总结性)

文章讲述了在使用HttpWebRequest访问HTTPS接口时遇到请求被终止的问题,提供了两种解决方案:一是设置ServicePointManager.SecurityProtocol以启用TLS1.1/1.2协议,二是自定义ServerCertificateValidationCallback验证服务证书。同时提醒注意安全协议的选择和使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

访问HTTPS接口时,总是出现请求被中止:无法建立SSL / TLS安全通道的解决方案

我使用HttpWebRequest访问HTTPS的接口时时,出现"请求被中止:无法建立 SSL / TLS安全通道"错误,百度了一下,搜到两个答案,都写下来,以供参考
第一个:
public ResponseModel GetHtml(string url)
{
//必须写在请求Url之前
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
/如果你的程序是.NET 4.0的,可以这样写:
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 192 |(SecurityProtocolType) 768 |(SecurityProtocolType) 3072;
/

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

}

第二个
public ResponseModel GetHtml(string url)
{
//必须在请求URL之前
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
}

//验证服务证书 返回True 解决Https无法建立 SSL / TLS安全通道"错误
private bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}

我的项目中选择了第二种方式。
第一种方式也是可以的,根据个人喜好吧。
以下是对第一种方式的补充:
ServicePointManager.SecurityProtocol支持的安全协议类型包括以下几种:
TLS1.2是 TLS(Transport Layer Security)协议的最新版本,它是一种安全协议,用于加密网络通信并确保数据的完整性,TLS1.2现在已成为最具安全性的TLS协议版本。
TLS1.1是 TLS 协议的一种旧版本,用于加密网络通信并确保数据的完整性。
TLS是 SSL(Secure Sockets Layer)协议的一个后续版本。它是一种安全协议,用于加密网络通信并确保数据的完整性。
SSL3.0是 SSL 协议的一个旧版本,已经被淘汰,目前已经不再安全。
注意事项
在进行网络请求时,如果使用了 ServicePointManager.SecurityProtocol,则应该遵循以下注意事项:
1、不要在不受信任的网络上使用不安全的协议,例如 SSL3.0。
2、根据实际需要设置安全协议类型,不要设置过多的协议类型,以避免协议混用带来的风险。
3、如果协议被禁用,将无法进行请求,因此要确保服务器端与客户端协议版本的一致性,以保证无法协商时不会发生通信失败的问题。
4、ServicePointManager.SecurityProtocol 是全局控制,不需要每次请求都指定。

Tls 192
指定传输层安全 (TLS) 1.0 安全协议。 TLS 1.0 协议在 IETF RFC 2246 中定义。
Tls11 768
指定传输层安全 (TLS) 1.1 安全协议。 TLS 1.1 协议在 IETF RFC 4346 中定义。 在 Windows 系统上,从 Windows 7 开始支持此值。
Tls12 3072
指定传输层安全 (TLS) 1.2 安全协议。 TLS 1.2 协议在 IETF RFC 5246 中定义。 在 Windows 系统上,从 Windows 7 开始支持此值。
Tls13 12288
指定 TLS 1.3 安全协议。 此 TLS 协议在 IETF RFC 8446 定义。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值