msxml2 80072f8f 的经典 ASP 安全错误

Classic ASP Security error with msxml2 80072f8f

提问人:RikRak 提问时间:10/21/2022 最后编辑:RikRak 更新时间:11/11/2022 访问量:387

问:

我正在更新旧版应用程序以使用新的支付 REST 服务,但在 POST 请求中遇到问题。代码在 Windows 10 开发计算机上运行良好,但在 Windows Server 2008 SP2 上失败:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "POST", uri, False
HttpReq.setRequestHeader "Content-Type", "application/json"
HttpReq.setRequestHeader "Authorization", authHeader

HttpReq.send json  '<-- Error here

我收到的错误是:

msxml3.dll error '80072f8f'
A security error occurred 

我调用的 Web 服务仅支持 TLS 1.2,但据我所知,运行此代码的机器也支持 TLS 1.2。

StackOverflow 上还有另一个问题,其症状与 Windows Server 2003 计算机上出现的此问题类似。该问题的解决方案建议应用修补程序,但指向修补程序的链接已被加密编程指南所取代,虽然可能相关,但并未指向明显的解决方案。

更新:看起来我可以在同一台机器上通过 CURL 发送相同的请求,因此机器本身可以处理与 url 的连接

更新2:我已将服务器上可用的密码套件与为目标站点报告的密码套件进行了检查,并且存在一些重叠。此外,目标站点可通过 CURL 访问,因此我假设这两台机器能够在某种程度上通过 https 进行通信

更新3:我已经调整了要使用的行和 ,但错误是一样的CreateObject"MSXML2.ServerXMLHTTP.3.0""MSXML2.ServerXMLHTTP.6.0"

更新4:我已经按照 SO 的其他解决方案中的建议添加了该行 这里 和 这里,但错误代码是相同的。F.D.公司setOptionobjHTTP.SetOption 2, objHTTP.GetOption(2)

更新5:最后,我通过在 .NET Framework 程序集中编写必要的逻辑并通过 COM 访问该功能来解决这个问题。我不是特别喜欢这个解决方案,因为它将代码分散到许多代码库中,并使部署变得有些复杂,但这是一个务实的选择。我还建议企业主,应用程序和服务器已经过期,无法进行现代化改造

VBScript ASP-经典 MSXML MSXML6

评论

0赞 user692942 10/21/2022
Windows 10 和 Windows Server 2008 SP2 并不等效,Windows 10 是更新的。目标计算机可能缺少密码套件。您可以使用 ssllabs.com 进行测试,并将其与服务器上安装的密码套件进行比较。
0赞 RikRak 10/21/2022
我检查了密码套件,两边都出现了密码。我还可以通过 CURL 成功建立连接,因此我目前的假设是 msxml 有一些特定的东西,并且它能够处理连接。然而,不知道如何验证这个理论......
0赞 user692942 10/21/2022
这回答了你的问题吗?VBA ServerXMLHTTP https 请求与自签名证书
0赞 user692942 10/21/2022
这回答了你的问题吗?证书颁发机构无效或不正确
2赞 Joel Coehoorn 11/8/2022
不幸的是,您应该尽快考虑更换此应用程序。这次你可能会解决这个问题,但TLS 1.2也计划最终(很快)退役,当这种情况发生时,Server 2008根本无法完成这项工作。

答:

0赞 b126 11/8/2022 #1

几年前我添加了同样的问题。

然后,您可以尝试这段代码并确认您在响应末尾看到 TLS v1.2 吗?

Set Http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.SetOption(2) = 13056
http.open "GET", yourUri, False
http.Send
Response.write http.responseText 

如果返回的 TLS VERSION 不是 TLS 1.2,则意味着您的 Windows 2008 服务器仍需要一些配置。请按照此处所述进行操作,它应该可以工作。