代码之家  ›  专栏  ›  技术社区  ›  wows

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

  •  3
  • wows  · 技术社区  · 14 年前

    我对密码学不太熟悉,有点困:

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

    他们给我提供了一个.pfx文件。在Windows7中,我双击该文件将其安装到我当前的用户-个人证书存储中。

    然后,我从存储区的证书条目中导出了一个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连接失败。

    这个方法有什么问题吗?我们的生产环境似乎使用类似的配置,但它运行的是WindowsServer2003。

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  4
  •   erickson    14 年前

    根本的问题是,您只允许程序访问证书。要执行身份验证,还需要访问私钥。

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

        2
  •  0
  •   Community CDub    7 年前

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