【问题标题】:SagePay Protocol Violation ErrorSagePay 协议违规错误
【发布时间】:2015-02-20 09:54:50
【问题描述】:

从昨天下午 1.30pm 开始,两个单独编写的访问 SagePay 支付网关和 Reporting API Endpoint 的应用程序都返回了以下错误:

The server committed a protocol violation. Section=ResponseStatusLine

这发生在代码中

System.Net.HttpWebRequest.GetResponse()

付款申请自 2009 年以来一直没有改变,它是由一位前员工编写的,具有讽刺意味的是,它计划在 3 周内更换。报告应用程序是去年年底编写的,从开始到昨天一直有效。

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

请问有没有人能解释一下是什么原因造成的?

谢谢。

【问题讨论】:

  • 从昨天开始我也遇到了这个问题。我与 SagePay 交谈过,他们说这确实是因为我们使用了 SSLv3,尽管它在 11 月被关闭,在线工具显示我们不再使用它。如果我从 SagePay 获得任何进一步的信息,我会通知您。

标签: opayo


【解决方案1】:

好的 - 我有一个解决办法:)

与 Sagepay 交谈后,他们不再支持三重 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 之外的所有协议才能使其正常工作。

【讨论】:

    【解决方案2】:

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

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

    这至少避免了协议违规,但对我来说却导致了以下错误:

    底层连接已关闭:连接意外关闭。

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

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

    【讨论】:

    • 我已经在 fiddler 中检查了这个,它确实连接的是 TLS 而不是 SSL3。 Win2003 上的连接(不起作用)和 Win7 上的连接(起作用)之间的唯一区别是密码。 Win7 使用 AES,Win2003 使用 3DES。我试图从 Sagepay 了解他们的最低密码要求是什么。
    【解决方案3】:

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

    我现在正在与我们的服务器主机一起调查此问题,但这也可能是您需要查看的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2011-01-29
      • 1970-01-01
      相关资源
      最近更新 更多