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是证书名,不带后缀,替换成你的证书名字就行



