我正在用 VB6 编写一个客户端程序,它将通过 HTTP 连接到服务器。运行服务器的公司为我提供了一个名为 SomeCertificate.p12 的证书文件。
我的程序在 Windows XP 上运行。这是客户正在使用的操作系统。
我试图在向服务器发送请求时找到如何使用此证书。
这是我到目前为止所做的:
- 将证书文件复制到我的测试计算机。
- 使用 Internet Explorer V8,我执行了“工具|Internet 选项|内容|证书|受信任的根权限”并导入了证书。
- 安装了 winhttpcertcfg 工具。
从命令提示符运行以下命令:
“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
我的 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?
谢谢你。