Classic ASP / IIS6 / Win2003 Server kann nicht mit TLS-Server kommunizieren

Sage Pay beendete heute die Ausnahmeregelung für Websites, die SSL3 für die Kommunikation mit ihren Zahlungs- / Autorisierungsservern verwenden. TLSv1 ist jetzt erforderlich.

Wir haben eine Windows Server 2003-Box mit IIS6 und zwei Sites, die (leider) in klassischem ASP geschrieben wurden. Die Box wurde gepatcht / die Registrierungsschlüssel aktualisiert, um POODLE abzuwehren, und verschiedene Online-Prüfer sichern dies. Der Server sollte NUR TLS verwenden.

Wenn Sie jedoch versuchen, eine Sage Pay-Transaktion mit WinHttp.WinHttpRequest.5.1 und einem POST zu autorisieren, schlägt der Versuch sofort fehl. Der einzige Fehler, der von WinHttpRequest zurückgemeldet wird, ist "-2147483638 - WinHttp.WinHttpRequest - Die zum Abschließen dieses Vorgangs erforderlichen Daten sind noch nicht verfügbar."

Internet Explorer auf demselben Server kann auch nicht auf die Administrationsoberflächen von Sage Pay zugreifen, die unter denselben URLs gehostet werden. Dies, obwohl SSLv2 und SSLv3 in den Internetoptionen deaktiviert sind. Auch hier sollte TLSv1 die einzige Option sein, die für ALLES auf der Box verfügbar ist.

Es spielt keine Rolle, welche Zeitlimits oder Optionen ich für das WinHttp-Objekt festgelegt habe - es schlägt so schnell fehl, dass es fast so aussieht, als hätte es noch nicht einmal versucht.

Ich habe überprüft, ob der betreffende Server mit den Servern von Sage Pay unter Verwendung von Curl kommunizieren kann. curl funktioniert entweder ohne Angabe eines Protokolls (es verwendet TLS) oder durch manuelle Angabe - und nicht, wenn SSL2 oder 3 angegeben ist - wie erwartet.

Wenn das funktioniert, warum dann nichts anderes - wenn jede Serverkonfiguration dies vorschreibt?

Hier ist ein kleines Codebeispiel, das den oben angegebenen WinHttpRequest-Fehler zurückgibt:

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

Wenn False in der Zeile objHTTP.Open in True geändert wird (um diese asynchrone Funktion auszuführen), gibt das Skript nichts zurück. Dieses Skript hat funktioniert, bevor Sage Pay die Dinge heute Nachmittag ausgeschaltet hat.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage