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

时间:2010-05-24 23:42:55

标签: c# .net asp.net ssl x509certificate

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

我正在尝试使用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。

谢谢!

2 个答案:

答案 0 :(得分:4)

潜在的问题是您只是让您的程序访问证书。要执行身份验证,它还需要访问私钥。

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

答案 1 :(得分:0)

看看这个并验证您的错误是由证书引起的 - 服务器是否发回了有关该问题的更多详细信息? Error 502 (Bad Gateway) when sending a request with HttpWebRequest over SSL