C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)

摘要:
10request=WebRequest.Create(url)asHttpWebRequest;1213}14else15{16request=WebRequest.Create(url)asHttpWebRequest;22request.Timeout=15000;23request.AllowAutoRedirect=false;
C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第1张C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第2张
 1         public static string HttpPost(string url, string param = null)
 2         {
 3             HttpWebRequest request;
 4 
 5             //如果是发送HTTPS请求  
 6             if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
 7             {
 8                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;   //协议按需选择,
 9                 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
10                 request = WebRequest.Create(url) as HttpWebRequest;
11                 request.ProtocolVersion = HttpVersion.Version10;
12 
13             }
14             else
15             {
16                 request = WebRequest.Create(url) as HttpWebRequest;
17             }
18 
19             request.Method = "POST";
20             request.ContentType = "application/json";
21             request.Accept = "*/*";
22             request.Timeout = 15000;  
23             request.AllowAutoRedirect = false;
24             //查找我们导入的证书
25             X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
26             certStore.Open(OpenFlags.ReadOnly);
27             var aa = certStore.Certificates;
28             X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindBySubjectName, "www.xxx.com", false);
29             request.ClientCertificates.Add(certCollection[0]);
30 
31 
32             StreamWriter requestStream = null;
33             WebResponse response = null;
34             string responseStr = null;
35 
36             try
37             {
38                 requestStream = new StreamWriter(request.GetRequestStream());
39                 requestStream.Write(param);
40                 requestStream.Close();
41 
42                 response = request.GetResponse();
43                 if (response != null)
44                 {
45                     StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
46                     responseStr = reader.ReadToEnd();
47                     reader.Close();
48                 }
49             }
50             catch (Exception)
51             {
52                 throw;
53             }
54             finally
55             {
56                 request = null;
57                 requestStream = null;
58                 response = null;
59             }
60 
61             return responseStr;
62         }
63 
64 
65         private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
66         {
67             return true; //总是接受  
68         } 
View Code

第一步导入证书:

a、运行输入“mmc”

C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第3张

 b、在控制台中点击“文件”——>“添加/删除管理单元”,在弹出框中依次选择“证书”-“添加”-“”-“确定”

C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第4张

上图点击“添加”弹出框选择“计算机账户”,一直下一步到完成。

C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第5张

c、证书导入,“证书”右键 选择“所有任务”,点击“导入“。

C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第6张

 d、证书授权

 1、工具下载 安装winhttpcertcfg.msi 下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=19801。

 2、到winhttpcertcfg安装目录运行如下命令提升账户访问权限:WinHttpCertCfg.exe -g -c LOCAL_MACHINEMY -s "证书名" -a  "NETWORK SERVICE"。

      说明:-s  证书名(如:www.xxxx.com) ;-a 授权用户

 3、如果你的IIS是7.0,需要设置网站应用池标识(如图)。

C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)第7张

4、重启IIS

免责声明:文章转载自《C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用KubeOperator扩展k8s集群的worker节点Innosetup 脚本写注册表实现自定义协议(Url Protocol)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Nginx】之安装使用和配置SSL支持

本文采用的是nginx源码安装 1、下载nginx源码包 wget http://nginx.org/download/nginx-1.8.0.tar 或者登录nginx官网下载更高版本 2、nginx安装需要其他环境的支持  环境是否安装了gcc rpm -qa|grep gcc   如果没有则需要yum install gcc-c++ 环境是否安装了...

常见的带宽换算

首先你要明白字节(Byte)和位(bit)的关系: 1 Byte=8 bit 量化网速的指标就是带宽,就是每秒传输了多少字节(Bps),或者每秒传输了多少位(bps) 1 Bps =8 bps  注意大小写;  而一般运营商告诉的网速都是bps 书上某些标准规定1024 = 1K; 1024K =1M; 1024M=1G; 而实际中,一般1000K = 1...

qbittorrent搜索插件合集

qbittorrent搜索 qbittorrent搜索一个很有特色的功能: 这里收集整理了一些公开网站的插件(Plugins for Public sites),并连 源py文件一起分享。 qbittorrent搜索插件:点击下载 说明:本地导入可批量,链接只能单个导入。另外很多 插件(源)不支持国内网络。 链接获取 主要是开发者工具中使用jQuery查...

SQL对字段出现NULL值的处理

SQL Server 的某些表字段默认是NULL,对于NULL字段如何处理? -判断某些字段是否为空 --case select case when '字段名' is null then '\N' else convert(varchar(20),'字段名') end as 'NewName' select case when null is null...

JBoss入门

 很多内容摘自 https://www.jianshu.com/p/4baaf549436b 1.安装目录 安装完Jboss后得目录结构 目录 功能 appclient/ 包含应用程序客户容器的配置细节。 bin/ 包含 Red Hat 企业版 Linux 和微软 Windows 上 JBoss EAP 的启动脚本。 docs/ 许可证文...

MD5加密之提取文件的MD5特征码

1 public static String encodeFile(String path) { 2 3 try { 4 MessageDigest digester = MessageDigest.getInstance("MD5"); 5 6...