web-dev-qa-db-fra.com

Erreur 0x1408F10B: "SSL3_GET_RECORD: mauvais numéro de version" avec SDK Paypal

On dirait que Paypal pourrait avoir mis à jour ses systèmes à la lumière du CANICHE attaque , provoquant des sites utilisant le PHP Paypal SDK à casser.

Je reçois l'erreur:

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

Que recommanderiez-vous pour résoudre ce problème sans compromettre la sécurité?

33
Archimedix

[~ # ~] mise à jour [~ # ~] : Comme l'a noté Jaffer, référentiel GitHub de Paypal a déjà fusionné les modifications ci-dessous, vous pouvez donc simplement mettre à jour votre SDK.

Au moins, cela semble fonctionner pour l'instant, bien que je devrai rechercher quel protocole il utilisera réellement.

\Paypal\Core\PPHttpConfig::$DEFAULT_CURL_OPTS[CURLOPT_SSLVERSION] = 1;
// 0 = default protocol (likely TLSv1), 1 = TLSv1; unsafe: 2 = SSLv2, 3 = SSLv3

Pour les autres personnes utilisant directement cURL, utilisez simplement

curl_setopt($handle, CURLOPT_SSLVERSION, 1);

MISE À JOUR:
Je viens de chercher source to cURL , ce sont les valeurs (// commente le mien):

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
};

Donc, pour résumer, oui, 1 est TLSv1 et à en juger par le commentaire, vaut probablement mieux que 4.
Code mis à jour ci-dessus.

33
Archimedix

Paypal a officiellement publié une mise à jour du SDK PHP pour résoudre ce problème, qui a été publiée dans le Github PR Jaffer lié à

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

2
Phil Hawthorne

Pour les personnes qui utilisent https://github.com/Quixotix/PHP-Paypal-IPN , définissez simplement false sur force_ssl_v3:

$listener = new IpnListener();
$listener->force_ssl_v3 = false;
1
datasn.io