1

我想访问的某个 SOAP 网络服务器配置为“接受客户端证书”,但不需要它们!

当我直接在 Internet Explorer 中输入 URL 时,它会弹出一个客户端证书(我没有)。当我取消此对话框时,会弹出第二个对话框,输入用户名和密码。这适用于我的用户名和密码。

我正在尝试在使用 ServerXMLHTTP 的脚本中做同样的事情

var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0") // or 4.0
objXMLHTTP.open("POST",
                "https://www.example.com",
                false,
                "username",
                "password");
objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
//   objXMLHTTP.setOption(2) = 13056; // This does not help
objXMLHTTP.send(XMLReq); // This fails

错误消息是msxml6.dll: An unknown error occurred while processing the certificate.msxml6.dll: A connection with the server could not be established

如何让 ServerXMLHTTP 忽略客户端证书的可选(!)请求并继续进行基本身份验证?或者我可以使用什么其他组件?

笔记:

  • 我无法更改网络服务器上的设置或获取客户端证书。
  • 我也试过 WinHTTP.WINHTTPRequest.5.1 但这没有帮助。
  • 请记住:这个问题是关于客户端证书的。objXMLHTTP.setOption(2) = 13056只会忽略服务器证书错误。
4

1 回答 1

0

为了让您了解最新情况并供将来参考:我放弃了。

据我了解,可以使用更底层的 win32 WinHTTP API 来完成。我的猜测:我需要从http://msdn.microsoft.com/en-us/library/aa384066%28VS.85%29.aspx设置 WINHTTP_OPTION_CLIENT_CERT_CONTEXT, 但 serverxmlhttp API 仅限于支持它。

最后,我能够创建一个客户端证书并让 SOAP 服务器信任它

于 2011-07-10T13:36:21.627 回答