Pregunta Error 0x1408F10B: "SSL3_GET_RECORD: número de versión incorrecta" con el SDK de PayPal


Parece que PayPal podría haber actualizado sus sistemas a la luz de la CANICHE  ataque, lo que hace que los sitios que usan PHP PayPal SDK se rompan.

Me sale el error:

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

¿Qué recomendarías para solucionar esto, sin comprometer la seguridad?


32
2017-10-15 08:54


origen


Respuestas:


ACTUALIZAR: Como señaló Jaffer, Repositorio de GitHub de PayPal ya tiene fusionó los cambios a continuación, por lo que puede actualizar su SDK.

Al menos esto parece funcionar por ahora, aunque tendré que investigar qué protocolo usará en realidad.

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

Para otras personas que usan cURL directamente, simplemente use

curl_setopt($handle, CURLOPT_SSLVERSION, 1);

ACTUALIZAR:
Solo miré hacia arriba fuente para CURAR, estos son los valores (// comentarios míos):

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

Entonces, para resumir, sí, 1 es TLSv1 y, a juzgar por el comentario, es probablemente mejor que 4.
Código actualizado arriba.


32
2017-10-15 08:56



PayPal ha lanzado oficialmente una actualización del SDK de PHP para solucionar este problema, que se publicó en el Github PR Jaffer vinculado a

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


2
2017-10-15 22:54



Para las personas que están usando https://github.com/Quixotix/PHP-PayPal-IPN, simplemente configure falso para forzar_ssl_v3:

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

1
2017-10-19 07:08