Sage Pay today stopped its exemption from using SSL3 sites when communicating with its payment / authorization servers. TLSv1 is now required.
We have a Windows Server 2003 window with IIS6 and two sites written (unfortunately) in classic ASP. The box has been fixed / registry keys updated to mitigate against POODLE, and various online checkers support this. The server should use TLS ONLY.
However, if you attempt to authorize a Sage Pay transaction using WinHttp.WinHttpRequest.5.1 and POST, the attempt immediately stops. The only error returned by WinHttpRequest is "-2147483638 - WinHttp.WinHttpRequest - the data required to complete this operation is not yet available."
Internet Explorer on the same server also cannot access the Sage Pay administration interfaces located at the same URLs. This is despite the fact that SSLv2 and SSLv3 are disabled in Internet Options. Again, TLSv1 should be the only option available for ANYTHING on the box.
It doesn't matter what timeouts or parameters I put in the WinHttp object - it fails so quickly, as if it hadn't even tried.
I have verified that the server in question can communicate with Sage Pay servers using curl. curl works either without the specified protocol (it uses TLS), or by manually specifying - and will not, when SSL2 or 3 is specified - as expected.
If this works, why will nothing happen - when every bit of the server configuration says it should?
Here is a small sample code that returns the above WinHttpRequest error:
<% 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 %>
If False is changed to True (to start this asynchronous call) in the objHTTP.Open line, the script returns nothing. This script worked before Sage Pay turned things around this afternoon.