web-dev-qa-db-ja.com

エラー0x1408F10B:Paypal SDKで「SSL3_GET_RECORD:wrong version number」

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

セキュリティを損なうことなく、これを修正するために何をお勧めしますか?

33
Archimedix

[〜#〜] update [〜#〜]: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のソース を検索しました。これらは値です(//私のコメント):

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よりも優れています。
上記のコードを更新しました。

33
Archimedix

Paypalは、この問題に対処するためのPHP SDKのアップデートを公式にリリースしました。これは、リンクされているGithub PR Jaffer

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

2
Phil Hawthorne

https://github.com/Quixotix/PHP-Paypal-IPN を使用している場合は、force_ssl_v3にfalseを設定するだけです:

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