错误0x1408F10B:“SSL3_GET_RECORD:版本号错误”,PayPal SDK

2022-08-30 14:00:57

看起来PayPal可能已经根据POODLE攻击更新了其系统,导致使用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

在不影响安全性的情况下,您有什么建议来解决此问题?


答案 1

更新:正如Jaffer所指出的,PayPal的GitHub存储库已经合并了下面的更改,因此您可以只更新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);

更新:
刚刚查找了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更好。
更新了上面的代码。


答案 2

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

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


推荐