Winhttp和p12证书

时间:2017-07-25 05:05:30

标签: vb6 ssl-certificate winhttp winhttpcertcfg

我正在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”

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

    导入证书:

    CN =字符串1

    OU =字符串2

    O = STRING3

    L =串,4

    C = STRING5

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

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

      Private WithEvents m_ServerObj As WinHttpRequest 设置m_ServerObj = New WinHttpRequest m_ServerObj.Open“GET”,“https://serveraddress

      调用m_ServerObj.SetClientCertificate(“LOCAL_MACHINE \ Personal \ SomeCertificate”)

      m_ServerObj.Send TextToSend

    2. 发送呼叫会导致异常: “需要证书才能完成客户端身份验证”

      我在SetClientCertificate调用中尝试了不同的字符串但是我一直收到同样的错误。

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

      谢谢。

1 个答案:

答案 0 :(得分:0)

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