2017-07-25 151 views
0

我正在写一个VB6中的客户端程序,它将通过HTTP连接到服务器。 运行服务器的公司提供了一个名为SomeCertificate.p12的证书文件。Winhttp和p12证书

我的程序在Windows XP上运行。这是客户正在使用的操作系统。

我试图找到如何使用此证书发送请求到服务器。

这是我迄今所做的:

  1. 复制的证书文件到我的测试计算机。
  2. 使用Internet Explorer V8,我做了“工具| Internet选项|内容|证书|受信任的根机构”并导入了证书。
  3. 安装了winhttpcertcfg工具。
  4. 冉从命令提示符下:

    “winhttpcertcfg -i SomeCertificate.p12 -c LOCAL_MACHINE \我的-a计算机名\用户名-p PasswordFromServerCompany”

输出成这个样子了。我替换虚设串不同的令牌:

进口证书:

CN =字符串1

OU =字符串2

O = STRING3

L =串,4

C = string5

私钥访问h如已经授予帐户: 计算机名\ USERNAME

  • 我的VB6的代码看起来是这样的:

    私人WITHEVENTS m_ServerObj作为WinHttpRequest 集m_ServerObj =新WinHttpRequest m_ServerObj 。开 “GET”, “https://serveraddress

    呼叫m_ServerObj.SetClientCertificate( “LOCAL_MACHINE \个人\ SomeCertificate”)

    m_ServerObj.Send TextToSend

  • 发送调用导致异常: “证书才能完成客户端身份验证”

    我在SetClientCertificate呼叫尝试不同的字符串,但我不断收到同样的错误。

    我会很感激任何帮助和提示。我究竟做错了什么?我的代码错了吗?我错误地使用了winhttpcertcfg吗?

    谢谢。

    +0

    我现在正在使用VB6的事实应该没关系。该程序使用Windows winhttp.dll,一个COM对象。我可以使用C++,但仍然有同样的问题。 – yaronkl

    回答

    0

    服务器公司向我发送了一个.PEM证书进行安装。一旦我做到了,问题就解决了。 谢谢。