SSLWebClient 请求 https 页面出错:未能创建 SSL/TLS 安全通道

Posted willingtolove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSLWebClient 请求 https 页面出错:未能创建 SSL/TLS 安全通道相关的知识,希望对你有一定的参考价值。

 

#问题:

  当向一个https的url上发送请求,报错:未能创建 SSL/TLS 安全通道;

using (WebClient client = new WebClient())
{
    string address="https://xxx.com";
    client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");

    System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
    var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}

 #原因:

  ssl证书不受信任,验证失败;

#解决方案:

  请求之前,进行如下设置;

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);

private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
}

  简写

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

  整合

 1 public class Test
 2 {
 3     public void TestFun
 4     {
 5       ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
 6        using (WebClient client = new WebClient())
 7       {
 8           string address="https://xxx.com";
9         client.Headers.Add(HttpRequestHeader.ContentType,"text/xml"); 10       System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding(); 11       var response = client.UploadData(address, "POST", encoding.GetBytes(msg)); 12       } 13 } 14 private bool CheckValidationResult(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors errors) 15 { // 总是接受 认证平台 服务器的证书 16 return true; 17 } 18 }

 

以上是关于SSLWebClient 请求 https 页面出错:未能创建 SSL/TLS 安全通道的主要内容,如果未能解决你的问题,请参考以下文章

Postman-简单使用

iOS - webView加载https

fiddle4开启了https设置,为啥还是解析不了https的请求

用httping测试WEB页面响应时间

限定页面执行时间,请求超时抛出异常或提示

https的页面中可以发起http的请求吗