M1-TLS 1.2-PayPal Express NVP CURL接続エラー#35:SSL接続エラー


15

curl 7.19.7を実行している古いサーバーに開発環境があります。

最近、Paypal Expressが機能しなくなり、エラーが返されることに気付きました"Unable to communicate with the PayPal gateway."

あなたが見ることができる例外ログを掘り下げる

exception 'Exception' with message 'PayPal NVP CURL connection error #35: SSL connect error' in /path/app/code/core/Mage/Paypal/Model/Api/Nvp.php:983
Stack trace:
#0 /path/app/code/core/Mage/Paypal/Model/Api/Nvp.php(616): Mage_Paypal_Model_Api_Nvp->call('SetExpressCheck...', Array)
#1 /path/app/code/core/Mage/Paypal/Model/Express/Checkout.php(381): Mage_Paypal_Model_Api_Nvp->callSetExpressCheckout()
#2 /path/app/code/core/Mage/Paypal/Controller/Express/Abstract.php(108): Mage_Paypal_Model_Express_Checkout->start('http://asdf...', 'http://asdf...', false)
#3 /path/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Paypal_Controller_Express_Abstract->startAction()
#4 /path/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('start')
#5 /path/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#6 /path/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#7 /path/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#8 /path/index.php(210): Mage::run('uk', 'store')

Paypalが最近サンドボックスで何か変更したかどうかはわかりませんが、SSLLabsのapi-3t.sandbox.paypal.com URLにアクセスして、サポートしているプロトコルがTLS 1.2だけであることがわかりました。

PHPマニュアルでプロトコルバージョンの設定について読んだ後、次のコードをハックして追加しました。

nano +194 lib/Varien/Http/Adapter/Curl.php

curl_setopt_array($this->_getResource(), $options);

+curl_setopt($this->_getResource(), CURLOPT_SSLVERSION, 6);

return $body;

すごい!優雅なApacheの後、Paypalエクスプレスを使用できるようになりました。ただし、コアをハックしなければならなかったことに満足していません。またcurl、Paypalではなく特定の場所でコアをハッキングしなければならなかったことも不満です。

この問題を修正する正しい方法に関するアドバイスはありますか?

編集:

いくつかの追加の調査結果を確認するだけで、これはMagentoのPaypal Standardには影響しません。これは、内部で使用するようには見えないためcurlです。特定のマシンで偽陰性が発生していました。

Q:「どうすればこれが機能する可能性があります!curlはコマンドラインでサンドボックスに接続できません」

A:「PayPal標準を使用しており、エクスプレスではなく、使用していません curl


古いデッドカール... PHPは次の問題になります。サーバーのOSをアップグレードします。VirtualBoxを入手してVMを実行すると、その方がはるかに簡単です。TLSは進んでいます。
Fiasco Labs

回答:


9

この同じ問題があり、curlライブラリを7.19から7.40に更新することで修正しました。

次のコマンドを実行します。 curl -v -s https://api-3t.sandbox.paypal.com/nvp

SSL Connectエラーが発生した場合、同じ問題が発生しています。

このcurlライブラリの更新を行う方法については、次のリンク(応答#3)を使用できます。https : //stackoverflow.com/questions/28495444/how-to-upgrade-php-curl-to-version-7- 36-0

ハックも試みましたが、うまくいきましたが、一時的な解決策に満足していませんでした。

この情報がお役に立てば幸いです。


1
少し頭を悩ませた後、PHP fpmを再起動することを忘れずに、すべてが機能し始めました:)ありがとう。curlのアップグレードのみが必要でした。
ルークロジャース

共有ホスティングで利用可能な回避策はありますか?
-Raks

4

今日もこのエラーが発生しました。app/code/core/Mage/Paypal/Model/Api/Nvp.php945行目付近に以下を追加すると、少なくともライブラリではなくPaypal Nvpモジュールに変更が加えられます。

 try {
        $http = new Varien_Http_Adapter_Curl();

+       $http->addOptions(array(CURLOPT_SSLVERSION => 6));

curl定数のマニュアルページによると、PHPバージョンが5.5.19または5.6.3以上CURL_SSLVERSION_TLSv1_26場合ではなく、定数を使用することもできます。


このPayPal特有のハックを投稿してくれてありがとう!他の回答を確認した後、curlをアップグレードすることで問題を解決しました。ありがたいことに、これが機能するのに十分な最新バージョンのphpを実行していました:)
ルークロジャース

コアファイルを編集しないでください。定数参照も好きです!
ロビーアヴェリル

4

この1週間で、サンドボックスは実際に変更され、TLS 1.2のみを受け入れました。私のテストでは、PHP 5.5.19+と十分に新しいcurlバージョン(7.29を使用しています)を使用している場合、TLS 1.2が自動的に起動します。OpenSSL 1.0.1+も必要です。

まだ5.3を実行しているので、コアにも同じハックを追加する必要がありましたが、Magentoはまだ5.3のサポートを主張しているので、おそらくすぐに公式のソリューションが期待できます(特に、これらの変更は六月)。

参照:https : //devblog.paypal.com/upcoming-security-changes-notice/


ありがたいことに、サーバーはphp 5.5.24を実行していたため、curlのアップグレードだけが必要でした。
ルークロジャース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.