栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

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

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

以下提供解决方法..

1. 设置全部变量 ServicePointManager.ServerCertificateValidationCallback 和 SecurityProtocol
	 public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
	 {
	            //直接确认,否则打不开    
	            return true;
	 }
	// (HttpWebRequest)WebRequest.Create(url); 创建链接前,加入全部变量
	ServicePointManager.ServerCertificateValidationCallback =  new RemoteCertificateValidationCallback(CheckValidationResult);
	ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
	// 只有.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. 请求证书要填写上,证书寻找的库
X509Certificate2 cert = new X509Certificate2(“证书物理路径”,“密码”,
	                        X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
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 KitsTools(安装的路径) 执行

winhttpcertcfg -g -c LOCAL_MACHINEMY -s "test" -a "NetworkService"

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906518.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号