Sage Pay今天结束了与网站的付款/授权服务器进行通信时对网站使用SSL3的豁免。现在需要TLSv1。
我们有一个运行IIS6的Windows Server 2003机器,还有两个用Classic ASP(很难)编写的站点。该框已打补丁/已更新注册表项以减轻POODLE的影响,各种在线检查程序对此进行了备份。服务器应仅使用TLS。
但是,当尝试使用WinHttp.WinHttpRequest.5.1和POST授权Sage Pay交易时,尝试立即失败。WinHttpRequest反馈的唯一错误是“ -2147483638-WinHttp.WinHttpRequest-完成此操作所需的数据尚不可用。”
同一服务器上的Internet Explorer也无法访问同一URL上托管的Sage Pay管理界面。尽管在“ Internet选项”中关闭了SSLv2和SSLv3,该操作仍然有效。同样,TLSv1应该是包装盒上所有内容可用的唯一选项。
我在WinHttp对象上放置什么超时或选项都没有关系-它是如此之快地失败,几乎就像没有尝试过一样。
我已验证有关服务器可以通过使用curl与Sage Pay的服务器进行通信。curl可以在未指定协议(使用TLS)的情况下工作,也可以通过手动指定-在预期的情况下指定SSL2或3时不起作用。
如果这行得通,为什么在服务器配置的每一个都说应该做的时候不做其他事情?
这是返回上面引用的WinHttpRequest错误的一小段代码示例:
<%
VSPServer = "https://test.sagepay.com/showpost/showpost.asp"
Set objHTTP = Server.CreateObject("WinHttp.WinHttprequest.5.1")
On Error Resume Next
objHTTP.Open "POST",CStr(VSPServer),False
objHTTP.Send "Hello"
If Err.Number <> 0 Then
Response.Write "Status: " & objHTTP.Status & "<p>"
Response.Write Err.Number & " - " & Err.Source & " - " & Err.Description
End If
On Error Goto 0
Set objHTTP = Nothing
%>
如果在objHTTP.Open行中将False更改为True(以运行此异步),则脚本不返回任何内容。该脚本在Sage Pay今天下午将其关闭之前起作用。
我现在设法解决了这个问题。更改搜索问题的性质后,我发现Win2003使用了不同的加密算法来连接服务器,甚至通过TLS。它使用3DES,而SagePay需要AES。(来源:SagePay协议违规错误)
这导致我安装了由Richard Day的答案(http://hotfixv4.microsoft.com/Windows%20Server%202003/sp3/Fix192447/3790/free/351385_ENU_i386_zip.exe-链接的链接-此为32位英语的修补程序-修复程序页面位于:https : //support.microsoft.com/kb/948963)-重新启动后,所有内容都放置到位。
谢谢所有提出建议的人。最终,这似乎是服务器级别的问题。如果这需要删除该帖子(因为它不再与编程相关),请这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句