Asp classic ServerXMLHTTP-msxml3.dll错误';80072f0c';-完成客户端身份验证需要证书

Asp classic ServerXMLHTTP-msxml3.dll错误';80072f0c';-完成客户端身份验证需要证书,asp-classic,client,client-certificates,serverxmlhttp,Asp Classic,Client,Client Certificates,Serverxmlhttp,在过去的5个多月里,我们能够通过server.Createobject(“MSXML2.ServerXMLHTTP”)从web服务器向Concur API发出XMLHTTP请求,没有问题,但现在我们收到以下错误消息: msxml3.dll错误“80072f0c” 完成客户端身份验证需要证书 您能想到接收这些请求的服务器可能已经进行了安全更改,不允许这些API请求通过ServerXMLHTTP继续工作吗?或者我们可以在发送服务器端做些什么来让它工作?我们仍然可以从发送服务器访问其他API,没有问题

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

msxml3.dll错误“80072f0c”

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

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

从我的本地计算机上,我可以向生成“需要证书”消息的同一API发出邮递员请求,邮递员可以毫无问题地处理该消息

我们的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

如果没有API的细节,我们很难知道。是贝宝吗?如果是,请参见答案中的问题和注释。与此类似,建议查看IIS用户是否有权访问证书。感谢您为我指点这篇文章。当我更改setOption(3)以显示我们的域名而不是友好名称时(它已经在注册中心的正确位置),我确实遇到了一个不同的错误。该新错误是msxml6.dll错误“80072f9a”系统错误:-2147012710。此问题的确切答案只有一个,但未被接受或投票。但我看到你已经找到了那一个谢谢你的帮助。在他们今天晚些时候对Concur端进行了一些配置更改之后,它确实可以工作,只包括SetOption(2)=13056的代码,并且SetOption(3)被注释掉了。他们显然不打算一开始就要求客户端证书,而且他们显然在周末更换了API网关提供商。