Pertanyaan Kesalahan 0x1408F10B: "SSL3_GET_RECORD: nomor versi salah" dengan PayPal SDK


Sepertinya PayPal mungkin telah memperbarui sistemnya sehubungan dengan POODLE  menyerang, menyebabkan situs menggunakan SDK PayPal PHP untuk rusak.

Saya mendapatkan kesalahan:

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

Apa yang akan Anda rekomendasikan untuk memperbaiki ini, tanpa mengorbankan keamanan?


32
2017-10-15 08:54


asal


Jawaban:


MEMPERBARUI: Seperti dicatat Jaffer, GitHub repositori PayPal telah menggabungkan perubahan di bawah ini, jadi Anda mungkin hanya memperbarui SDK Anda.

Setidaknya ini tampaknya berfungsi untuk saat ini, meskipun saya harus menyelidiki protokol apa yang sebenarnya akan digunakan.

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

Untuk orang lain yang menggunakan cURL secara langsung, gunakan saja

curl_setopt($handle, CURLOPT_SSLVERSION, 1);

MEMPERBARUI:
Hanya mendongak sumber ke cURL, ini adalah nilai-nilai (// komentar milik saya):

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

Jadi untuk meringkas, ya, 1 adalah TLSv1 dan menilai dari komentar, mungkin lebih baik daripada 4.
Kode yang diperbarui di atas.


32
2017-10-15 08:56



PayPal telah secara resmi merilis pembaruan ke SDK PHP untuk mengatasi masalah ini, yang diposting di Github PR Jaffer yang ditautkan

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


2
2017-10-15 22:54



Untuk orang yang menggunakan https://github.com/Quixotix/PHP-PayPal-IPN, setel false ke force_ssl_v3:

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

1
2017-10-19 07:08