M1 - TLS 1.2 - ข้อผิดพลาดในการเชื่อมต่อ CURL ของ PayPal Express NVP # 35: ข้อผิดพลาดในการเชื่อมต่อ SSL


15

ฉันมีสภาพแวดล้อมแบบ dev บนเซิร์ฟเวอร์เก่าที่ใช้ curl 7.19.7

เร็ว ๆ นี้ผมได้สังเกตเห็นว่า Paypal "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 มีการเปลี่ยนแปลงอะไรกับแซนด์บ็อกซ์ของพวกเขาหรือไม่ แต่ไปที่ URL api-3t.sandbox.paypal.com บน SSLLabsและเห็นว่าโปรโตคอลเดียวที่พวกเขารองรับคือ 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;

ที่ดี! หลังจากอาปาเช่อย่างสง่างามตอนนี้ฉันสามารถใช้ Paypal express ได้แล้ว อย่างไรก็ตามฉันไม่มีความสุขที่ฉันต้องแฮ็คหลัก ฉันยังไม่พอใจที่ฉันต้องแฮ็คหลักในสถานที่ที่เฉพาะเจาะจงcurlมากกว่าไปยัง Paypal

ไม่มีใครมีคำแนะนำในวิธีที่ถูกต้องในการแก้ไขปัญหานี้หรือไม่?

แก้ไข:

เพียงยืนยันการค้นพบพิเศษบางอย่างนี้จะไม่ส่งผลกระทบต่อ Paypal Standard ใน Magento เนื่องจากไม่ปรากฏว่าใช้curlภายใต้ประทุน เราได้รับผลลบที่ผิดพลาดในบางเครื่อง

ถาม: "สิ่งนี้จะทำงานได้อย่างไร! curl ไม่สามารถเชื่อมต่อกับแซนด์บ็อกซ์บนบรรทัดคำสั่ง"

ตอบ: "ใช้มาตรฐาน paypal และไม่แสดงก็ไม่ได้ใช้ curl


ลอนเก่าที่ตายแล้ว ... PHP จะเป็นปัญหาต่อไป อัปเกรดระบบปฏิบัติการบนเซิร์ฟเวอร์ รับ VirtualBox และใช้ VM มันเป็นวิธีที่ง่ายกว่ามาก TLS กำลังดำเนินการอยู่
Fiasco Labs

คำตอบ:


9

เรามีปัญหาเดียวกันนี้และแก้ไขได้โดยอัปเดต curl library จาก 7.19 เป็น 7.40 ..

เรียกใช้คำสั่งต่อไปนี้: curl -v -s https://api-3t.sandbox.paypal.com/nvp

หากคุณได้รับข้อผิดพลาดการเชื่อมต่อ SSL คุณมีปัญหาเดียวกันกับที่เรามี

คุณสามารถใช้ลิงค์ต่อไปนี้ (ตอบกลับ # 3) สำหรับคำแนะนำเกี่ยวกับวิธีการอัปเดตไลบรารี curl นี้: /programming/28495444/how-to-upgrade-php-curl-to-version-7- 36-0

เราลองใช้แฮ็คและมันใช้งานได้ แต่เราไม่พอใจกับวิธีแก้ปัญหาชั่วคราว

ฉันหวังว่าข้อมูลนี้จะช่วยคุณออก


1
หลังจากการเกาหัวเราจำได้ว่าต้องรีสตาร์ท PHP fpm แล้วมันก็เริ่มทำงาน :) ขอบคุณ การอัพเกรดขดเป็นสิ่งที่จำเป็นต้องมี
ลุคร็อดเจอร์ส

วิธีแก้ปัญหาใด ๆ สำหรับการโฮสต์ที่ใช้ร่วมกัน
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_SSLVERSION_TLSv1_2แทน6ถ้าคุณมีรุ่น PHP> = 5.5.19 หรือ 5.6.3


ขอบคุณสำหรับการโพสต์แฮ็คเพย์เพย์นี้ หลังจากตรวจสอบคำตอบอื่น ๆ เราได้แก้ปัญหาโดยการอัพเกรดม้วนงอ โชคดีที่เราได้ใช้รุ่นที่ทันสมัยของพอ php สำหรับการทำงาน :)
ลุคร็อดเจอร์ส

คำตอบที่ดีเพียงอย่าแก้ไขไฟล์หลัก ฉันชอบการอ้างอิงคงที่เช่นกัน!
Robbie Averill

4

กล่องทรายมีการเปลี่ยนแปลงแน่นอนในสัปดาห์ที่ผ่านมาเพื่อยอมรับ TLS 1.2 เท่านั้น จากการทดสอบของฉัน TLS 1.2 จะเริ่มเล่นโดยอัตโนมัติหากคุณใช้ PHP 5.5.19+ และมีเวอร์ชั่น curl ที่เพียงพอ (ฉันใช้ 7.29) คุณต้องมี OpenSSL 1.0.1+ ด้วย

เนื่องจากเรายังคงใช้งาน 5.3 เราต้องเพิ่มการแฮ็คเดียวกันในคอร์ด้วยเช่นกัน แต่เนื่องจาก Magento ยังเรียกร้องการสนับสนุน 5.3 เราอาจคาดหวังวิธีแก้ปัญหาอย่างเป็นทางการในไม่ช้า (โดยเฉพาะอย่างยิ่งเนื่องจากการเปลี่ยนแปลงเหล่านี้จะกระทบระบบการผลิต Paypal ด้วย มิถุนายน).

การอ้างอิง: https://devblog.paypal.com/upcoming-security-changes-notice/


โชคดีที่เซิร์ฟเวอร์กำลังใช้งาน php 5.5.24 ดังนั้นการอัปเกรด curl จึงเป็นสิ่งที่จำเป็น
ลุคร็อดเจอร์ส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.