带有p12 cert +密码的HttpWebRequest

时间:2018-02-15 09:07:12

标签: c# .net httpwebrequest

我需要使用p12证书(带密码)+ cookie进行身份验证。

这是我的代码:

X509Certificate2 certificate = new X509Certificate2();
byte[] rawCertificateData = File.ReadAllBytes(@"C:\mycert.p12");
certificate.Import(rawCertificateData, "c3rtifPassw0rd", X509KeyStorageFlags.PersistKeySet);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://apidomain.com/getDatas");
request.ClientCertificates.Add(certificate);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Cookie("apicookie", "myCookieString") { Domain = "apidomain.com" });
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), ASCIIEncoding.ASCII))
{
    result = reader.ReadToEnd();
}
return result;

服务器返回400错误。

1 个答案:

答案 0 :(得分:2)

(我没有足够的声誉通过评论回答) 根据我使用webrequest的经验,一些服务器拒绝非标准请求;我的意思是,首先,您需要确保为http请求(用户代理,引用,语言等)正确设置所有标头。

然后,确保使用.NET Framework 4.5或更高版本,因为旧版本在管理某些证书时遇到问题。