C# 接口带x509证书Post接口

 //创建方法

public static string HttpPostFrom(string url)
        {

            string json = "";//返回json字符串               
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);//创建请求
                var keystorefile = "E:\\https证书以及demo\\https证书以及demo\\client.p12";//签名文件路径
                var keypasswd = "$Zu6#3123?";    //签名文件密码


                ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;//设置安全协议

                InstallCertificate("E:\\https证书以及demo\\https证书以及demo\\client.p12", "$Zu6#34PH?", StoreLocation.CurrentUser, StoreName.My);//导入证书
                X509Certificate cer = new X509Certificate(keystorefile, keypasswd);//实例化x509的对象方法

                ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidate;//设置回调  为true
                req.ClientCertificates.Add(cer);   //放入请求的证书集
                
                req.Proxy = null;//代理
                req.Method = "post";//方法
                req.ContentType = "application/x-www-form-urlencoded";//标头
                //req.ContentType = "application/json";
                req.Timeout = 600000;//超时时间
                byte[] btbody = Encoding.UTF8.GetBytes(url);//转字节
                req.ContentLength = btbody.Length;//设置字节长度
                using (Stream st = req.GetRequestStream())//写入流
                {
                    st.Write(btbody, 0, btbody.Length);
                    st.Close();
                    st.Dispose();
                }

                WebResponse wr = (HttpWebResponse)req.GetResponse();//获取返回
                using (StreamReader sr = new StreamReader(wr.GetResponseStream()))//读取返回流
                {
                    json = sr.ReadToEnd();
                    sr.Close();
                    sr.Dispose();
                }
                wr.Close();
                //result = JsonConvert.DeserializeObject<ApiResult>(json);

            }
            catch (WebException ex)
            {
                json = "远程访问错误:\r\n" + ex.Message;
            }
            catch (Exception ex)
            {
                json = ex.Message;
            }
            return json;
        }

 private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
        {
            // trust any certificate!!!
            System.Console.WriteLine(error);
            //为了通过证书验证,总是返回true
          

  //导入证书
        public static bool InstallCertificate(string certFilePath, string password, StoreLocation location, StoreName storeName)
        {
            try
            {
                if (!File.Exists(certFilePath))
                {
                    return false;
                }
                byte[] certData = File.ReadAllBytes(certFilePath);
                X509Certificate2 cert = new X509Certificate2(certData, password, X509KeyStorageFlags.Exportable);
                X509Store store = new X509Store(storeName, location);
                store.Open(OpenFlags.MaxAllowed);
                store.Remove(cert);
                store.Add(cert);
                store.Close();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值