看起来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
在不影响安全性的情况下,您建议如何解决此问题?
答案 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;