Ssl SetClientCertificate使用什么主题?

Ssl SetClientCertificate使用什么主题?,ssl,asp-classic,certificate,ssl-certificate,activexobject,Ssl,Asp Classic,Certificate,Ssl Certificate,Activexobject,我正在尝试使用以下内容发送请求: ActiveXObject("WinHttp.WinHttpRequest.5.1") 但是,这需要一个客户端证书(我们已经提供了) 在PHP cURL中进行了测试后,我可以使用: curl_setopt($SOAP, CURLOPT_SSLCERT,$filepathtocertificate); 这很好用。但是,我必须使用运行asp(javascript)的IIS,并指向运行脚本的机器的证书存储: SetClientCertificate("LOCAL

我正在尝试使用以下内容发送请求:

ActiveXObject("WinHttp.WinHttpRequest.5.1")
但是,这需要一个客户端证书(我们已经提供了)

在PHP cURL中进行了测试后,我可以使用:

curl_setopt($SOAP, CURLOPT_SSLCERT,$filepathtocertificate);
这很好用。但是,我必须使用运行asp(javascript)的IIS,并指向运行脚本的机器的证书存储:

 SetClientCertificate("LOCAL_MACHINE\\Personal\\Certificate subject");
为了我们的实际部署。MS文档()表明,上面的路径必须说明证书的“主题”,但是证书似乎有几个主题,并且没有几个或所有主题的组合似乎会产生任何结果,在发送请求之前,我遇到了以下错误:

WinHttp.WinHttpRequest error '80072f0c'

A certificate is required to complete client authentication
查看证书存储并使用同一文件夹中的其他脚本,可以看出它们确实存在,但主题如下:

C=US, O=Organisation NAme, OU="Another Organisation Name, Inc.", CN=Organisation Name Root
或类似的


对于在证书存储中选择和发送证书需要提供哪些参数SetClientCertificate,如果您有任何建议,我们将不胜感激

我在这个问题上遇到了很多麻烦-在发送之前使用脚本语言中的winhttp 5.1设置客户端证书

我使用mmc和证书管理单元在CURRENT_USER\Personal中导入证书-但是Winhttp SetClientCertificate似乎没有做任何事情,我也无法提取任何错误代码或消息,因此这是一个反复尝试和错误的情况-SetClientCertificate字符串应该类似于“Location\store\subject”例如“CURRENT\u USER\Personal\My Certificate”(或\\如果您的语言要求\转义)-最后一部分是“subject”,这一部分不太清楚。在MMC下,subject被分为许多元素

我最终通过删除位置和存储(它们是默认值,所以我可能很幸运)并只提供主题字段(我用于主题字段的值是“CN=”行中主题下的值(当证书在mmc下打开时)-实现了这一点(可能是巧合)也是主mmc证书列表上“颁发给”列中的值。在我的情况下,它起作用了-显然,如果有一个证书具有这两个不同的值,那么您需要分别尝试


如果有人同样陷入困境,希望这能有所帮助。

这是一个非常老的问题,但我今天必须找到答案。@JSL提供的上述答案帮助了我。如果您只提供证书使用者名称,那么它就起作用了!因此很明显,指定完整路径的方式存在错误

我从这个链接获得了Windows7的正确信息

下面是一个有效的VBA脚本

Dim objHttp As New WinHttp.WinHttpRequest
objHttp.Open "GET", url, False
objHttp.SetClientCertificate "CURRENT_USER\My\TestCert"
objHttp.send
有效位置为本地\u计算机和当前\u用户以及 有效的商店名称是“我的”、“根”和“信任的人”。
请记住,C++中的反斜杠,C等。< /P>我使用MSXML2.ServXMLHTTP60发布URL,并且基本上需要一个证书。我的情况是我安装了IE的证书,但是如何在我的注册表中获得路径信息?或者我需要将我的证书登记到我的注册表中吗?