0

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

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

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

这是我到目前为止所做的:

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

    “winhttpcertcfg -i SomeCertificate.p12 -c LOCAL_MACHINE\My -a COMPUTERNAME\USERNAME -p PasswordFromServerCompany”

输出是这样的。我用虚拟字符串替换了不同的标记:

进口证书:

CN=字符串1

OU=字符串2

O=字符串3

L=字符串4

C=字符串5

已为帐户授予私钥访问权限:COMPUTERNAME\USERNAME

  1. 我的 VB6 代码如下所示:

    Private WithEvents m_ServerObj As WinHttpRequest Set m_ServerObj = New WinHttpRequest m_ServerObj.Open "GET", " https://serveraddress "

    调用 m_ServerObj.SetClientCertificate("LOCAL_MACHINE\Personal\SomeCertificate")

    m_ServerObj.Send TextToSend

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

我在 SetClientCertificate 调用中尝试了不同的字符串,但我不断收到相同的错误。

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

谢谢你。

4

1 回答 1

0

服务器公司给我发了一个 .PEM 证书来安装。一旦我这样做了,问题就解决了。谢谢你。

于 2017-07-26T20:51:30.680 回答