M1 - TLS 1.2 - Lỗi kết nối PayPal Express NVP CURL # 35: Lỗi kết nối SSL


15

Tôi có một môi trường dev trên một máy chủ cũ chạy curl 7.19.7.

Gần đây tôi nhận thấy rằng Paypal Express không còn hoạt động và đang trả về lỗi "Unable to communicate with the PayPal gateway.".

Đi sâu vào nhật ký ngoại lệ bạn có thể thấy

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')

Tôi không biết Paypal có thay đổi gì với hộp cát của họ gần đây không, nhưng đã truy cập URL api-3t.sandbox.paypal.com trên SSLLabs và thấy rằng giao thức duy nhất họ hỗ trợ là TLS 1.2.

Sau khi đọc về cài đặt các phiên bản giao thức trong hướng dẫn sử dụng PHP, tôi đã nhanh chóng thêm vào như sau

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

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

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

return $body;

Tuyệt quá! Sau một apache duyên dáng, bây giờ tôi có thể sử dụng Paypal express. Tuy nhiên, tôi không vui khi tôi phải hack lõi. Tôi cũng không vui khi tôi phải hack lõi ở một nơi cụ thể curlchứ không phải là Paypal.

Có ai có lời khuyên về một cách chính xác để khắc phục vấn đề này?

BIÊN TẬP:

Chỉ cần xác nhận một số phát hiện bổ sung, điều này không ảnh hưởng đến Tiêu chuẩn Paypal trong Magento vì nó dường như không được sử dụng curldưới mui xe. Chúng tôi đã nhận được tiêu cực sai trên các máy nhất định.

Q: "Làm thế nào điều này có thể hoạt động! Curl không kết nối được với hộp cát trên dòng lệnh"

A: "Đó là sử dụng tiêu chuẩn paypal và không thể hiện, nó không sử dụng curl


Những lọn tóc chết cũ ... PHP sẽ là vấn đề tiếp theo. Nâng cấp hệ điều hành trên máy chủ. Nhận VirtualBox và chạy VM, cách đó dễ dàng hơn nhiều. TLS đang tiếp tục.
Phòng thí nghiệm Fiasco

Câu trả lời:


9

Chúng tôi đã có vấn đề tương tự và chỉ khắc phục nó bằng cách cập nhật thư viện curl từ 7.19 đến 7.40 ..

Chạy lệnh sau: curl -v -s https://api-3t.sandbox.paypal.com/nvp

Nếu bạn gặp lỗi SSL Connect, bạn cũng gặp vấn đề tương tự.

Bạn có thể sử dụng liên kết sau (phản hồi số 3) để được hướng dẫn cách thực hiện cập nhật thư viện curl này: /programming/28495444/how-to-upTHER-php-curl-to-version-7- 36-0

Chúng tôi cũng đã thử một bản hack và nó đã hoạt động nhưng chúng tôi không hài lòng với một giải pháp tạm thời.

Tôi hy vọng thông tin này sẽ giúp bạn ra ngoài.


1
Sau một chút gãi đầu, chúng tôi nhớ khởi động lại fpm PHP và sau đó tất cả bắt đầu hoạt động :) Cảm ơn. Nâng cấp curl là tất cả những gì được yêu cầu.
Luke Rodgers

Bất kỳ giải pháp có sẵn cho lưu trữ chia sẻ?
Raks

4

Tôi cũng gặp phải lỗi này ngày hôm nay. Thêm dòng sau vào app/code/core/Mage/Paypal/Model/Api/Nvp.phpkhoảng 945 ít nhất là thực hiện thay đổi trong mô-đun Paypal Nvp thay vì các thư viện.

 try {
        $http = new Varien_Http_Adapter_Curl();

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

Theo trang hướng dẫn hằng số curl , bạn cũng có thể sử dụng hằng số CURL_SSLVERSION_TLSv1_2thay vì 6nếu bạn có phiên bản PHP> = 5.5.19 hoặc 5.6.3.


Cảm ơn bạn đã đăng bài hack cụ thể paypal này! Sau khi xem xét các câu trả lời khác, chúng tôi đã giải quyết vấn đề bằng cách nâng cấp curl. Rất may, chúng tôi đã chạy một phiên bản php đủ hiện đại để hoạt động này :)
Luke Rodgers

Câu trả lời tuyệt vời, chỉ cần không chỉnh sửa các tập tin cốt lõi. Tôi thích các tài liệu tham khảo liên tục quá!
Robbie Averill

4

Sandbox thực sự đã thay đổi trong tuần qua để chỉ chấp nhận TLS 1.2. Từ các thử nghiệm của tôi, TLS 1.2 sẽ tự động khởi động nếu bạn đang sử dụng PHP 5.5.19+ và phiên bản curl đủ gần đây (Tôi đang sử dụng 7.29). Bạn cũng cần OpenSSL 1.0.1+.

Vì chúng tôi vẫn đang chạy 5.3, chúng tôi cũng phải thêm cùng một hack vào lõi, nhưng vì Magento vẫn yêu cầu hỗ trợ cho 5.3, chúng tôi có thể mong đợi một giải pháp chính thức sớm (đặc biệt là vì những thay đổi này cũng sẽ ảnh hưởng đến các hệ thống sản xuất Paypal trong Tháng 6).

Tham khảo: https://devblog.paypal.com/upcome-security-changes-notice/


Rất may, máy chủ đã chạy php 5.5.24, vì vậy việc nâng cấp curl là tất cả những gì cần thiết.
Luke Rodgers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.