【问题标题】:Error 0x1408F10B: "SSL3_GET_RECORD:wrong version number" with PayPal SDK错误 0x1408F10B:“SSL3_GET_RECORD:错误的版本号”与 PayPal SDK
【发布时间】:2014-12-10 06:46:38
【问题描述】:

看起来 PayPal 可能已根据 POODLE attack 更新其系统,导致使用 PHP PayPal SDK 的网站崩溃。

我得到错误:

PayPal/Exception/PPConnectionException: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

/var/www/site/vendor/paypal/sdk-core-php/lib/PayPal/Core/PPHttpConnection.php:91
/var/www/site/vendor/paypal/sdk-core-php/lib/PayPal/Core/PPAPIService.php:66
/var/www/site/vendor/paypal/sdk-core-php/lib/PayPal/Core/PPBaseService.php:82
/var/www/site/vendor/paypal/adaptivepayments-sdk-php/lib/PayPal/Service/AdaptivePaymentsService.php:97

在不影响安全性的情况下,您会建议如何解决此问题?

【问题讨论】:

  • 我的网站在短时间内遇到了同样的错误。但随后完全停止从 PayPal 接收 IPN。您收到 IPN 了吗?我们最后唯一改变的是禁用 SSL v3。
  • 我们仍在接收 IPN。也许您禁用了 PayPal 期望建立(安全?)连接的东西。我不知道 PayPal 的 IPN 服务支持哪些设置,但您可以联系他们的支持以获取详细信息。如果您学到一些有趣的东西,请随时在这里分享。
  • 我们支持 AWS 弹性负载均衡器。我们禁用了 SSL3。再次启用它似乎没有帮助。你有类似的设置吗?您是否禁用了 SSL3?只是想确定是否禁用 SSL3 可能是问题。
  • PayPal SDK Github 页面上的相关链接。他们将您的更改合并到官方 SDK:github.com/paypal/rest-api-sdk-php/pull/127

标签: php ssl curl paypal


【解决方案1】:

更新:正如 Jaffer 所指出的,PayPal's GitHub repository 下面已经有merged the changes,因此您可能只需更新您的 SDK。

至少现在这似乎可行,尽管我将不得不调查它实际使用的协议。

\PayPal\Core\PPHttpConfig::$DEFAULT_CURL_OPTS[CURLOPT_SSLVERSION] = 1;
// 0 = default protocol (likely TLSv1), 1 = TLSv1; unsafe: 2 = SSLv2, 3 = SSLv3

对于直接使用 cURL 的其他人,只需使用

curl_setopt($handle, CURLOPT_SSLVERSION, 1);

更新:
刚刚查了source to cURL,这些是值(// cmets 我的):

enum {  
    CURL_SSLVERSION_DEFAULT, // 0
    CURL_SSLVERSION_TLSv1,   // 1
    CURL_SSLVERSION_SSLv2,   // 2
    CURL_SSLVERSION_SSLv3,   // 3

    CURL_SSLVERSION_LAST /* never use, keep last */  // 4
};

总而言之,是的,1 是 TLSv1,从评论来看,可能比 4 更好。
更新了上面的代码。

【讨论】:

  • 或 \PayPal\Core\PPHttpConfig::$defaultCurlOptions[CURLOPT_SSLVERSION] = 4;在 0.13 版本的 rest-api 中
  • 是的,谢谢。无论 SSL 4 是什么,但暂时这也解决了我的问题。
  • 我猜是TLSv1,但没看源码。
  • 感谢您的建议;我的示例应用程序(与 php sdk 捆绑在一起的应用程序不工作,并且给我一个 SSL 连接错误)......而现场工作!刚刚切换到第 4 版,现在可以使用了!
  • Paypal 的想法是什么……现场网站无处不在。为我工作 - 谢谢。
【解决方案2】:

PayPal 已经正式发布了 PHP SDK 的更新来解决这个问题,该更新发布在 Github PR Jaffer 链接到

https://github.com/paypal/rest-api-sdk-php/releases/tag/v0.13.1

【讨论】:

    【解决方案3】:

    对于使用https://github.com/Quixotix/PHP-PayPal-IPN的人,只需将false设置为force_ssl_v3:

    $listener = new IpnListener();
    $listener->force_ssl_v3 = false;
    

    【讨论】:

      猜你喜欢
      • 2012-10-05
      • 2021-12-12
      • 2021-06-23
      • 2014-01-12
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2020-11-28
      相关资源
      最近更新 更多