错误0x1408F10B:带有PayPal SDK的"SSL3_GET_RECORD:错误的版本号"

Arc*_*dix 33 php ssl curl paypal

看起来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
Run Code Online (Sandbox Code Playgroud)

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

Arc*_*dix 33

更新:正如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
Run Code Online (Sandbox Code Playgroud)

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

curl_setopt($handle, CURLOPT_SSLVERSION, 1);
Run Code Online (Sandbox Code Playgroud)

更新:
刚查看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
};
Run Code Online (Sandbox Code Playgroud)

总而言之,是的,1是TLSv1并从评论中判断,可能比4更好
.更新了上面的代码.