0

在过去的 5 个月里,我们能够通过 server.Createobject("MSXML2.ServerXMLHTTP") 从我们的 Web 服务器向 Concur API 发出 XMLHTTP 请求,但现在我们收到了以下错误消息:

msxml3.dll 错误“80072f0c”

需要证书才能完成客户端身份验证

您能想到接收这些请求的服务器可能已经做出的安全更改,以不允许这些 API 请求通过 ServerXMLHTTP 继续工作吗?或者我们可以在发送服务器端做些什么来让它工作?我们仍然可以从我们的发送服务器访问其他 API 没有问题。

从我的本地计算机上,我可以向生成“需要证书”消息的同一个 API 发出 Postman 请求,并且 Postman 处理它没有问题。

我们的 TLS 证书根据其“增强密钥用法”支持客户端和服务器身份验证。该错误发生在存储证书的 Windows 2008R2 服务器和没有客户端证书的沙盒 Windows 2012 服务器上。这是 vbscript 片段:

EndPoint = "https://us.api.concursolutions.com/oauth2/v0/otp"
Payload = "client_id=" & consumerKey & "&client_secret=" & consumerSecret & "&channel_handle=" & Email & "&channel_type=email"
Payload = Payload & "&link=" & link & "&name=" & name & "&company=" & company
Dim xmlhttp
Set xmlhttp = Createobject("MSXML2.ServerXMLHTTP.6.0")
'Get error message with or without the next 3 lines
XMLhttp.setOption(2) = 13056
strCert = "Friendly Name"
XMLhttp.setOption(3)= "LOCAL_MACHINE\My\" & strCert
XMLhttp.Open "POST",EndPoint,false    
XMLhttp.setRequestHeader "User-Agent","HTTP/1.1"
XMLhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"
XMLhttp.setRequestHeader "Accept", "application/json"
XMLhttp.setRequestHeader "Host", "us.api.concursolutions.com"
XMLhttp.setRequestHeader "Connection", "close"
XMLhttp.setRequestHeader "Content-Length", "437"
XMLhttp.send Payload
4

0 回答 0