M1-TLS 1.2-PayPal Express NVP CURL 연결 오류 # 35 : SSL 연결 오류


15

컬이 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 매뉴얼 에서 프로토콜 버전 설정에 대해 읽은 후 다음을 hackily 추가했습니다.

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

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

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

return $body;

큰! 아파치 우아한 후 나는 지금 페이팔 익스프레스를 사용할 수 있습니다. 그러나 나는 핵심을 해킹해야했기 때문에 기쁘지 않다. 또한 curlPaypal 이 아닌 특정 장소에서 핵심을 해킹해야한다는 것에 만족하지 않습니다 .

누구 든지이 문제를 해결하는 올바른 방법에 대한 조언이 있습니까?

편집하다:

추가 결과를 확인하면 Magento의 Paypal Standard에는 영향을 미치지 않습니다 curl. 우리는 특정 기계에서 잘못된 부정을 받고있었습니다.

Q : "어떻게 작동 할 수 있습니까? curl이 명령 행의 샌드 박스에 연결되지 않습니다"

A : "페이팔 표준을 사용하고 있고 표현하지 않습니다. 사용하지 않습니다. 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)를 사용할 수 있습니다. /programming/28495444/how-to-upgrade-php-curl-to-version-7- 36-0

우리는 또한 해킹을 시도했지만 효과가 있었지만 임시 솔루션에 만족하지 못했습니다.

이 정보가 도움이 되길 바랍니다.


1
약간의 머리 긁기 후에 우리는 PHP fpm을 다시 시작한 것을 기억 한 다음 모두 작동하기 시작했습니다 :) 감사합니다. 컬 업그레이드 만 있으면됩니다.
Luke Rodgers

공유 호스팅에 사용할 수있는 해결 방법이 있습니까?
Rakesh Shewale

4

오늘도이 오류가 발생했습니다. app/code/core/Mage/Paypal/Model/Api/Nvp.php라인 945에 다음을 추가하면 라이브러리 대신 Paypal Nvp 모듈이 변경됩니다.

 try {
        $http = new Varien_Http_Adapter_Curl();

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

curl constants 매뉴얼 페이지 에 따르면 PHP 버전이 5.5.19 또는 5.6.3 CURL_SSLVERSION_TLSv1_26경우 대신 상수 를 사용할 수도 있습니다 .


이 페이팔 전용 해킹을 게시 해 주셔서 감사합니다! 다른 답변을 검토 한 후 curl을 업그레이드하여 문제를 해결했습니다. 고맙게도 우리는 이것이 작동하기에 충분한 현대식 PHP 버전을 실행하고있었습니다 :)
Luke Rodgers

좋은 대답은 핵심 파일을 편집하지 마십시오. 나는 상수 참조도 좋아한다!
로비 애 버릴

4

샌드 박스는 지난 주 TLS 1.2 만 수락하도록 변경되었습니다. 내 테스트에서 PHP 5.5.19 이상과 충분히 최신 curl 버전을 사용하면 TLS 1.2가 자동으로 시작됩니다 (7.29를 사용하고 있습니다). OpenSSL 1.0.1 이상도 필요합니다.

우리는 여전히 5.3을 운영하고 있기 때문에 핵심에도 동일한 핵을 추가해야했지만, 마 젠토는 여전히 5.3에 대한 지원을 요구하고 있기 때문에 아마도 공식적인 솔루션을 곧 기대할 수있을 것입니다. 유월).

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


고맙게도 서버는 PHP 5.5.24를 실행하고 있었으므로 curl을 업그레이드하는 것이 전부였습니다.
Luke Rodgers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.