Подтвердить что ты не робот

Ошибка 0x1408F10B: "SSL3_GET_RECORD: неправильный номер версии" с SDK PayPal

Похоже, PayPal может обновить свои системы в свете POODLE attack, в результате чего сайты, использующие SDK PHP PayPal, разбиваются.

Я получаю сообщение об ошибке:

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

Что вы рекомендовали бы исправить, не подвергая опасности безопасность?

4b9b3361

Ответ 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);

UPDATE:
Просто посмотрел источник на cURL, это значения (// comments mine):

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.
Обновлен код выше.

Ответ 3

Для людей, которые используют https://github.com/Quixotix/PHP-PayPal-IPN, просто установите значение false для force_ssl_v3:

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