错误0x1408F10B:" SSL3_GET_RECORD:版本号错误"使用PayPal SDK

时间:2014-10-15 08:54:11

标签: php ssl curl paypal

看起来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

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

3 个答案:

答案 0 :(得分:33)

更新:正如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,这些是值(//评论我的):

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好。
更新了以上代码。

答案 1 :(得分:2)

PayPal已正式发布PHP SDK的更新以解决此问题,该问题已发布在Github PR Jaffer链接

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

答案 2 :(得分:1)

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

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