Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api C httpwebrequest不发送客户端证书_Api_Https_Request - Fatal编程技术网

Api C httpwebrequest不发送客户端证书

Api C httpwebrequest不发送客户端证书,api,https,request,Api,Https,Request,我尝试将带有客户端证书的请求发送到支付门API。如果它从浏览器进入,则工作正常。但服务台告诉我,当我从下面的代码发出请求时,他们的服务器没有收到证书: string host = "https://api.gateway/ping"; string certName = "cert/cert.p12"; string password = "certpass"; ServicePointManager.SecurityP

我尝试将带有客户端证书的请求发送到支付门API。如果它从浏览器进入,则工作正常。但服务台告诉我,当我从下面的代码发出请求时,他们的服务器没有收到证书:

string host = "https://api.gateway/ping";
            string certName = "cert/cert.p12";

            string password = "certpass";

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
            request.PreAuthenticate = true;
            request.AllowAutoRedirect = true;
          //  request.ClientCertificates.Add(new X509Certificate2("cert/cert.pfx", "pass"));
            X509Certificate2Collection certificates = new X509Certificate2Collection();
            certificates.Import(certName, password, X509KeyStorageFlags.MachineKeySet|X509KeyStorageFlags.UserKeySet);
            request.ClientCertificates = certificates;
            request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
            SetBasicAuthHeader(request, "user", "pass");
            request.UserAgent = "This is request from C# code";
            request.ContentType = "application/json";
            request.Credentials = CredentialCache.DefaultCredentials;
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
            {
                Console.WriteLine(reader.ReadToEnd());
                Console.ReadKey();
            }

通过更改证书颁发,问题已得到解决。不要在创建证书时使用MD5WithRSA加密。从3.5到.NET Core的.NET将忽略附加此类证书