c#-无法使用X509客户端证书连接到HTTPS

我是密码学的新手,但我有点卡住了:

我正在尝试使用HTTPS(从我的开发环境)连接到Web服务. Web服务需要客户端证书-我认为我已正确安装.

他们为我提供了.PFX文件.在Windows 7中,我双击该文件将其安装到“当前用户-个人”证书存储中.

然后,我从商店中的证书条目中导出了X509 Base-64编码的.cer文件.它没有与之关联的私钥.

然后,在我的应用中,我试图像这样连接到服务:

var certificate = X509Certificate.CreateFromCertFile("xyz.cer"));
var serviceUrl = "https://xyz";
var request = (HttpWebRequest) WebRequest.Create(serviceUrl);
request.ClientCertificates.Add(certificate);
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";

连接时出现502连接失败.

这种方法有什么不对的地方吗?我们的生产环境似乎可以使用类似的配置,但它正在运行Windows Server 2003.

谢谢!

解决方法:

潜在的问题是,您只授予程序对证书的访问权限.要执行身份验证,它也需要访问私钥.

正确实例化的X509Certificate2可以带有私钥,应将其传递给ClientCertificates.Add()方法.我相信Import()方法可以接受.pfx文件作为输入;导出的.cer文件缺少私钥,对客户端身份验证没有用.

上一篇:C# – Azure的Web应用程序的新X509Certificate2()导致System.Security.Cryptography.CryptographicException:拒绝访问


下一篇:从Java中的.p7b文件提取单个.cer证书