作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在本地主机中运行我的应用程序时,它工作正常,但当我将其发布到 Azure 时,我的请求停止工作。收到错误:“请求已中止:无法创建 SSL/TLS 安全通道。”
我有一个调用外部商业 Soap-API 的应用程序。外部 API 需要在我发出请求时传递客户端证书,并且还需要将我的 IP 地址列入白名单。
商业 API 已将我从 Azure 中的应用程序服务/属性/传出和虚拟 IP 地址获取的 IP 列入白名单
我已将客户端证书文件 (.p12) 添加到解决方案中的一个文件夹中,在检查上传到 azure 的文件时,我也可以在那里看到它。
使用 RestSharp,我的请求如下所示:
private string RequestToBv(string pXml)
{
X509Certificate2 cert = new X509Certificate2(bvCertificatePath, bvCertificatePassword);
var client = new RestClient(mXmlApiUrl); //mXmlApiUrl = url to endpoint
client.Timeout = -1;
client.ClientCertificates = new X509CertificateCollection() { cert };
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/xml");
request.AddParameter("application/xml", pXml, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
if (response.StatusCode == HttpStatusCode.OK)
{
return response.Content;
}
return "";
}
在 Azure 中调试时,我收到 StatusCode = 0 和错误消息:“请求已中止:无法创建 SSL/TLS 安全通道。”
在 stackoverflow 中搜索答案后,我必须在方法顶部添加以下代码行:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
但我仍然得到相同的错误响应。
我需要在 Azure 中设置任何设置或在 Azure 上以某种方式安装我的客户端证书吗?
最佳答案
我要做的是将 .p12 证书文件转换为 crt 文件,将其导入到 Azure,然后在代码中使用 X509Store 来获取它。之后握手成功
关于c# - RestRequest 在本地工作,但不能从 azure "The request was aborted: Could not create SSL/TLS secure channel.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65899311/
我是一名优秀的程序员,十分优秀!