当前位置:   article > 正文

.NET POST HTTPS 出现错误,请求被中止: 未能创建 SSL/TLS 安全通道。_请求被中止 未能创建ssl tls安全通道

请求被中止 未能创建ssl tls安全通道

Http 请求 Https 的时候,会出现  请求被中止: 未能创建 SSL/TLS 安全通道的异常。

以下提供解决方法..

1. 设置全部变量 ServicePointManager.ServerCertificateValidationCallback 和 SecurityProtocol

  1. public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  2. {
  3. //直接确认,否则打不开
  4. return true;
  5. }
  6. // (HttpWebRequest)WebRequest.Create(url); 创建链接前,加入全部变量
  7. ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  8. ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
  9. // 只有.net4.5以上才有Tls11,Tls12,建立通道

2. 设置请求的 UserAgent, UserAgent 为空也请求失败

例如:

request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36";

 

3. 请求证书要填写上,证书寻找的库

  1. X509Certificate2 cert = new X509Certificate2(“证书物理路径”,“密码”,
  2. X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
  3. request.ClientCertificates.Add(cert);

4. 将IIS程序池【加载用户配置信息】改成 true

5. 服务器要导入当前所需要的证书。存储在【个人】和【受信任的根证书颁发机构】, 可以通过mmc 打开控制器,添加证书模块

6. 将IIS程序池的【标识】设置成【管理帐号】,如果怕不安全可以设置成 NetworkService,但是需要对NetworkService 进行授权

 

如何对NetworkService进行授权呢?

安装授权工具

  • 下载 winhttpcertcfg.exe 安装

 附下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=19801

  • 安装完  用命令窗口  跳转到 C:\Program Files (x86)\Windows Resource Kits\Tools(安装的路径) 执行

winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "test" -a "NetworkService"

test是证书名,不带后缀,替换成你的证书名字就行

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号