El servidor ASP / IIS6 / Win2003 clásico no puede comunicarse con el servidor TLS

Sage Pay finalizó hoy su exención para que los sitios usen SSL3 cuando se comuniquen con sus servidores de pago / autorización. TLSv1 ahora se requiere.

Tenemos un cuadro de Windows Server 2003 con IIS6 y dos sitios escritos (lamentablemente) en ASP clásico. La caja ha sido parcheada / claves de registro actualizadas para mitigar contra POODLE, y varios correctores en línea respaldan esto. El servidor debe estar usando TLS SOLAMENTE.

Sin embargo, al intentar autorizar una transacción de Sage Pay utilizando WinHttp.WinHttpRequest.5.1 y una POST, el intento falla de inmediato. El único error de WinHttpRequest es "-2147483638 - WinHttp.WinHttpRequest - Los datos necesarios para completar esta operación aún no están disponibles".

Internet Explorer en el mismo servidor tampoco puede acceder a las interfaces de administración de Sage Pay alojadas en las mismas URL. Esto, a pesar de que SSLv2 y SSLv3 están desactivados en Opciones de Internet. Nuevamente, TLSv1 debería ser la única opción disponible para CUALQUIER COSA en el cuadro.

No importa qué tiempos de espera u opciones ponga en el objeto WinHttp; falla tan rápido que es casi como si ni siquiera lo hubiera intentado.

He verificado que el servidor en cuestión PUEDE comunicarse con los servidores de Sage Pay mediante curl. curl funciona sin un protocolo especificado (usa TLS) o especificando manualmente, y no lo hará cuando se especifique SSL2 o 3, como se esperaba.

Si eso funciona, ¿por qué no funcionará otra cosa, cuando cada bit de configuración del servidor dice que debería?

Aquí hay una pequeña muestra de código que devuelve el error WinHttpRequest citado anteriormente:

<%
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
%>

Si False se cambia a True (para ejecutar este asíncrono) en la línea objHTTP.Open, el script no devuelve nada. Este script funcionó antes de que Sage Pay apagara las cosas esta tarde.

Respuestas a la pregunta(2)

Su respuesta a la pregunta