M1 - TLS 1.2 - PayPal Express NVP CURL bağlantı hatası # 35: SSL bağlantı hatası


15

Eski bir çalışan curl 7.19.7 dev bir ortam var.

Son zamanlarda Paypal Express'in artık çalışmadığını ve bir hata döndürdüğünü fark ettim "Unable to communicate with the PayPal gateway.".

Görebileceğiniz istisna günlükleri incelemek

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'ın son zamanlarda kendi sanal alanıyla bir şey değiştirip değiştirmediğini bilmiyorum, ancak SSLLabs'daki api-3t.sandbox.paypal.com URL'sine gitti ve destekledikleri tek protokolün TLS 1.2 olduğunu gördüm.

PHP kılavuzunda protokol sürümlerini ayarladıktan sonra hackily aşağıdakileri ekledim

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

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

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

return $body;

Harika! Zarif bir apache sonra şimdi Paypal express kullanabilirsiniz. Ancak, çekirdeği kesmek zorunda olduğum için mutlu değilim. Ayrıca çekirdeği curlPaypal yerine belirli bir yerde kesmek zorunda olduğum için mutlu değilim .

Herkes bu sorunu düzeltmek için doğru bir yol hakkında herhangi bir tavsiye var mı?

DÜZENLE:

Sadece bazı ekstra bulguları onaylamak, bu Magento'daki Paypal Standardını etkilemez, çünkü curlbaşlık altında kullanılmıyor gibi görünüyor . Bazı makinelerde yanlış negatifler alıyorduk.

S: "Bu nasıl çalışıyor olabilir! Curl komut satırındaki sanal alana bağlanamıyor"

A: "paypal standart kullanıyor ve ifade değil, kullanmaz curl


Eski ölü bukleler ... PHP bir sonraki sayı olacak. İşletim sistemini sunucuda yükseltin. VirtualBox alın ve VM'leri çalıştırın, bu şekilde çok daha kolay. TLS devam ediyor.
Fiasco Labs

Yanıtlar:


9

Aynı sorunu yaşadık ve sadece curl kütüphanesini 7.19'dan 7.40'a güncelleyerek düzelttik.

Aşağıdaki komutu çalıştırın: curl -v -s https://api-3t.sandbox.paypal.com/nvp

SSL Connect hatası alırsanız, aynı sorunla karşılaşırsınız.

Bu kıvrılma kütüphanesi güncellemesinin nasıl yapılacağıyla ilgili talimatlar için aşağıdaki bağlantıyı (yanıt no. 3) kullanabilirsiniz: /programming/28495444/how-to-upgrade-php-curl-to-version-7- 36-0

Ayrıca bir saldırı denedik ve işe yaradı, ancak geçici bir çözümden memnun değildik.

Umarım bu bilgiler size yardımcı olur.


1
Baş tırmalamak biraz sonra biz PHP fpm yeniden başlatmayı hatırladı ve sonra hepsi çalışmaya başladı :) Teşekkürler. Gerekli olan tüm şeyleri yükseltmek.
Luke Rodgers

Paylaşılan barındırma için herhangi bir geçici çözüm var mı?
Rakesh Shewale

4

Bugün bu hatayla da karşılaştım. Aşağıdakileri app/code/core/Mage/Paypal/Model/Api/Nvp.php945 satırına eklemek en azından kütüphaneler yerine Paypal Nvp modülünde değişiklik yapmaktır.

 try {
        $http = new Varien_Http_Adapter_Curl();

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

Göre bukle sabitleri manuel sayfasında, ayrıca sabit kullanabilirsiniz CURL_SSLVERSION_TLSv1_2yerine 6bir PHP versiyonunu> = 5.5.19 veya 5.6.3 varsa.


Bu daha fazla paypal özel kesmek yayınladığınız için teşekkürler! Diğer cevapları gözden geçirdikten sonra kıvrımı yükselterek sorunu çözdük. Neyse ki bunun için php'nin modern bir versiyonunu çalıştırıyorduk :)
Luke Rodgers

Harika yanıt, sadece çekirdek dosyaları düzenlemeyin. Ben de sürekli referans seviyorum!
Robbie Averill

4

Korumalı alan gerçekten geçen hafta sadece TLS 1.2'yi kabul edecek şekilde değişti. Testlerimden, PHP 5.5.19+ ve yeterince yeni bir kıvrılma sürümü kullanıyorsanız TLS 1.2 otomatik olarak devreye girecektir (7.29 kullanıyorum). Ayrıca OpenSSL 1.0.1+ sürümüne de ihtiyacınız var.

Hala 5.3 çalıştığımızdan, aynı hack'i çekirdeğe de eklemek zorunda kaldık, ancak Magento hala 5.3 için destek talep ettiğinden, muhtemelen yakında resmi bir çözüm bekleyebiliriz (özellikle bu değişiklikler Paypal üretim sistemlerine de Haziran).

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


Neyse ki sunucu php 5.5.24 çalıştırıyordu, bu yüzden yükseltme kıvırmak tüm gerekli oldu.
Luke Rodgers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.