SagePay协议违规错误

时间:2015-02-20 09:54:51

标签: sagepay

自昨天下午1点30分起,两个单独编写的访问SagePay支付网关和Reporting API端点的应用程序都返回了以下错误:

The server committed a protocol violation. Section=ResponseStatusLine

这发生在

点的代码中
System.Net.HttpWebRequest.GetResponse()

付款申请自2009年以来未发生变化,由前工作人员撰写,具有讽刺意味的是,计划在3周内更换。报告申请书于去年年底编写,自成立以来一直有效。直到昨天。

我已经和SagePay谈过,他们建议从他们的角度来看没有发生任何事情,我唯一想到的是上个月最近禁用了SSLv3,但当时报告工具已更改为使用TLS而我已经检查过今天这个确实使用了TLS。

是否有人能够了解可能造成这种情况的原因?

谢谢。

3 个答案:

答案 0 :(得分:1)

好的 - 我已经解决了这个问题:)

与Sagepay交谈后,他们不再支持Triple DES加密,只支持AES。默认情况下,Windows 2003不会使用AES - 因此存在问题。

但是,如果您在本文中安装此修补程序:https://support.microsoft.com/kb/948963它将启用AES并解决问题。

顺便说一下,看起来该文章中的修补程序链接已损坏,但此链接有效:http://hotfixv4.microsoft.com/Windows%20Server%202003/sp3/Fix192447/3790/free/351385_ENU_i386_zip.exe

确实需要重新启动,您需要禁用除TLS1.0之外的所有协议才能使其正常工作。

答案 1 :(得分:0)

我们遇到同样的问题。一个建议是将以下内容添加到web.config:

<system.net>
    <settings>
        <httpWebRequest useUnsafeHeaderParsing="true" />
    </settings>
</system.net>

这至少可以避免违反协议,但会导致以下错误:

基础连接已关闭:连接意外关闭。

我对您的评论感兴趣的另一点是,我们只能在Windows 2003服务器上重现此错误。在Windows 2008上,它可以正常工作。我也通过强制它通过SSL3连接在我的Windows 7开发机器上重现了这一点。

我在Schannel中为客户端和服务器应用程序禁用了SSL3,但我想知道是否由于某种原因继续通过SSL3连接,而不是使用TLS。有什么想法吗?

答案 2 :(得分:0)

我刚刚在SagePay上与某人谈过这个问题,他说这是使用SSLv3连接的问题。我们认为我们去年11月禁用了此功能,但他说在使用Windows Server 2003时,他听说有时看起来SSLv3被禁用但是当它到达最后一步时它没有为某些人做原因。

我现在正在使用我们的服务器主机查看此内容,但这也可供您查看。