8

以前从 asp 调用过许多宁静的服务 - 但这个让我难过。首先我的功能看起来像

Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP") 
with objHTTP 
.open "post", x_posturl, False 
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send x_xmlstr
end with

并且返回的错误是

msxml3.dll 错误“80072f0d”证书颁发机构无效或不正确

所以,谷歌了一下,建议是添加行

.setOption 2, 13056

这给出了错误

msxml3.dll 错误“80072f0c”需要证书才能完成客户端身份验证

然后我联系了服务供应商,他们建议

点击地址栏旁边的证书错误,查看证书,选择Details,选择Copy to File,下载到文件。将其安装到服务器上的受信任证书中,以阻止尝试提交数据时出现的错误。

所以,尝试在这里使用说明- 但仍然没有乐趣,任何帮助表示赞赏

4

2 回答 2

2

似乎位于的服务器x_posturl的证书配置错误,或者您的客户端计算机不包含/识别证书的根权限(很可能)。有几个选项可以修复:

  1. 如果配置错误,让他们修复他们的证书。
  2. 如果他们的证书有效,但您的机器无法识别根权限,那么您需要在本地安装根权限证书。
  3. 指示MSXML2.ServerXMLHTTP忽略证书错误,此处似乎已回答:VBA ServerXMLHTTP https request with self signed certificate
  4. 如果提供者支持,则更x_posturl改为 start withhttp://而不是。https://不过,在生产场景中不建议这样做。

能具体分享一下x_posturl是什么吗?我们应该能够通过查看 SSL 握手进行调试。

于 2020-10-15T19:23:55.660 回答
1

我能够通过传入参数来找到解决方案。

objHTTP.SetOption 2,objHTTP.GetOption(2)

Dim objHTTP
Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.SetOption 2, objHTTP.GetOption(2)
objHTTP.Open "post", x_posturl, False 
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send x_xmlstr
于 2020-10-18T02:27:20.263 回答