ssl - SetClientCertificate 使用什么主题?

标签 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_MACHINE\\Personal\\Certificate subject");

用于我们的实际部署。 MS 文档 ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa384055(v=vs.85).aspx ) 建议上面的路径必须说明证书的“主题”,但是证书似乎有几个主题,并且没有几个或所有主题的组合似乎产生任何结果,我被卡住了在发送请求之前出现以下错误:

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_USER\Personal\My Certificate”(或者\\如果您的语言需要\进行转义)-最后一部分是 ' subject' 这不是应该的那么清楚。在 MMC 下,主题被分解为许多元素。

我最终通过删除 location 和 store 使其工作 - 它们是默认值,所以我可能很幸运 - 并仅提供主题字段 - 我用于主题字段的值是“CN = “在主题下(当证书在 mmc 下打开时)-但这(可能是巧合)也是主要 mmc 证书列表上“颁发给”列中的值。在我的例子中它起作用了——很明显,如果有一个证书的这两个值不同,那么你需要尝试每一个。

希望这对遇到类似问题的人有所帮助。

关于ssl - SetClientCertificate 使用什么主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531400/

相关文章:

ssl - 如何在 mkbundle 的 Mono 应用程序中使用 SSL 和 HttpListener

javascript - 经典 ASP : VBScript to Javascript

php - 仅在第一次尝试时无法建立 SSL 连接

windows - 这个未签名的驱动程序是如何安装在 Windows 7 64 位上的?

docker - 刷新让我们在 docker 容器中加密根 CA

ruby-on-rails - Ruby on Rails 错误 bundler

iis - 如何在 IIS 5.1 (WinXP Pro) 下与 .NET & CF 一起运行经典 ASP 脚本?

REST请求中基于python证书的身份验证

java - Tomcat 8 Manager war deploy 上传通过 SSL 失败

html - 在 Excel 中居中图像