ssl - Rest Sharp:请求被中止:无法创建 SSL/TLS 安全通道
问题描述
我正在使用 Rest Sharp DLL 来调用休息服务。我正在使用的服务在 HTTPS 上运行(但没有在代码中安装/使用证书)。但是 API 服务器确实安装了证书
它工作正常,直到最近 API 服务器由于过期而更新了它的证书。
现在我得到了异常:请求被中止:无法创建 SSL/TLS 安全通道。
我检查了响应的属性 IsSuccessful =false、ResponseStatus =Error、StatusCode= 0。
下面是我的代码:
var client = new RestClient(_action);
client.RemoteCertificateValidationCallback = setCallBack;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
client.Timeout = 90000;
client.ReadWriteTimeout = 90000;
var request = new RestRequest(Method.GET);
request.Timeout = SafeConvert.ToInt32(p_timedout);
request.ReadWriteTimeout = SafeConvert.ToInt32(p_timedout);
foreach (var item in pHeaders)
{
request.AddHeader(item.Key, item.Value);
}
request.AddHeader("Content-Type", "application/json");
RestSharp.IRestResponse response = client.Execute(request);
public static bool setCallBack(object r_Sender, X509Certificate r_Certificate, X509Chain r_Chain, SslPolicyErrors r_SslPolicyErrors)
{
return true;
}
我试过添加
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
和之前的 .Excute 但仍然是同样的问题。
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | 安全协议类型.Tls12 | 安全协议类型.Ssl3;
PS:这是在生产环境中发生的
解决方案
推荐阅读
- php - iOS 不能通过 PHP 的头文件播放 mp3 文件
- powershell - 使用 Test-Path 查询多个文件版本
- javascript - javascript:发布到 api 时序列化/反序列化类实例
- android - webpack tns 运行 android --bundle 失败,“onNavigatingTo”未定义
- node.js - 为请求设置标头时,NodeJS http服务器响应标头为空白
- javascript - 从元素数组创建 React Svg
- python - 通过 HTTPS 使用 python 请求似乎会破坏有效负载
- reactjs - Auth0, React, 为部署配置回调 url
- python - 谷歌 Colab 未加载
- spring-boot - 一个项目中的多个 Spring Cloud Functions 用于在 AWS Lambda 上部署