Api C httpwebrequest不发送客户端证书
我尝试将带有客户端证书的请求发送到支付门API。如果它从浏览器进入,则工作正常。但服务台告诉我,当我从下面的代码发出请求时,他们的服务器没有收到证书: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
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将忽略附加此类证书