提问人:RikRak 提问时间:10/21/2022 最后编辑:RikRak 更新时间:11/11/2022 访问量:387
msxml2 80072f8f 的经典 ASP 安全错误
Classic ASP Security error with msxml2 80072f8f
问:
我正在更新旧版应用程序以使用新的支付 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.公司setOption
objHTTP.SetOption 2, objHTTP.GetOption(2)
更新5:最后,我通过在 .NET Framework 程序集中编写必要的逻辑并通过 COM 访问该功能来解决这个问题。我不是特别喜欢这个解决方案,因为它将代码分散到许多代码库中,并使部署变得有些复杂,但这是一个务实的选择。我还建议企业主,应用程序和服务器已经过期,无法进行现代化改造
答:
几年前我添加了同样的问题。
然后,您可以尝试这段代码并确认您在响应末尾看到 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 服务器仍需要一些配置。请按照此处所述进行操作,它应该可以工作。
评论