2014-11-05 72 views
7

我一直在一個網站上工作了很長時間,該網站高度依賴於PayPal正常工作。沒有它,這是真的沒用。SSL錯誤不能更改爲TLS

大約凌晨一點我的時間(我在CET時區)一切正常,我磨光了代碼,功能,它的工作原理應該如此。在我睡覺之前,我做了三重檢查,發現一切正常。

我早上醒來,沒有任何與貝寶有關的事實際上的作品。在我向你展示實際的代碼和錯誤之前,稍微解釋一下我正在使用的內容。我正在使用Express Checkout和Paypal Adaptive Payments SDK

我有一些「虛擬」帳戶,我在developer.paypal.com上進行模擬推動者(所有者)和買方互動,因爲我有場景時所有者向用戶提供資金,反之亦然。無論如何,他們都工作得很好,現在他們都拋出這個錯誤(在Adaptive Payments SDK中,它告訴我哪一行代碼是錯誤的,並且在Express Checkout中,因爲這是通過文檔完成的代碼,它不會顯示哪個文件誤差卻是相同的錯誤):

'error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure'

現在,經過我看到這個帖子https://devblog.paypal.com/poodle-ssl-3-0-vulnerability/您剛纔禁用SSL完全,我意識到這個問題是在實際。您希望您的用戶現在可以使用TLS,這非常好。我三重檢查了我的服務器啓用了TLS,它的確和我改變了(已經超過一百萬次了)我的配置設置使用該卷TLS(因爲我使用PHP)通過執行類似的操作:

curl_setopt($ch, CURLOPT_SSLVERSION, 1);(這是它在Express Checkout和Adaptive Pay中的樣子,它只是一個關聯數組,但它在兩者中都是一樣的)

我也在某處和您的建議中找到實際更新我的api憑據的地方。我做到了。我去了paypal.com - > API,然後點擊更新哪些工作,但後來我注意到,在我的developer.paypal.com帳戶,我有一些虛擬帳戶沒有任何改變。我應該手動更新這些還是什麼?

編輯:

這被髮送到貝寶的支持,我真的有急事,不能再次寫了整個事情,所以我們對此深感抱歉!問題是修復了感謝任何真正花時間閱讀的人。

該問題已解決,將CURLOPT_SSL_CIPHER_LIST => 'TLSv1'添加到我的PPHttpConfig.php文件! :)

回答

17

嘗試添加

CURLOPT_SSL_CIPHER_LIST => 'TLSv1' 

PPHttpConfig.php文件。我遇到同樣的問題,並花費數小時的時間找到解決方案。這對我有效。

+0

非常有幫助的提示重複您的答案在這裏https://stackoverflow.com/questions/26452755/php-curl-is-probably-using-sslv3-insted-of-tls-when-connecting-to-https/26765281# 26765281和這裏http://stackoverflow.com/questions/26763737/update-php-curl-request-from-sslv3-to-tls/26764845#26764845 – 2014-11-05 19:20:25

+0

我在哪裏可以找到這個PPHttpconfig.php?我需要爲我們的magento網站之一..提前預訂 – Nazim 2014-11-26 13:12:20

+0

嗨Nazim,進入你的貝寶的目錄,例如/ usr/lib/php5,那麼它應該是貝寶/供應商/貝寶/ sdk核心-php/lib目錄/貝寶/核心/ PPHttpConfig.php。 – 2014-12-10 18:35:30

0

我遇到了同樣的問題。

我的服務器是舊版本的Ubuntu 12。04

  1. 檢查sertificates echo "All certificates in ca-certificates.crt, listed by subject, check for presence of VeriSign's 'Class 3 Public Primary - G5':" awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep "G5"

  2. 我OpenSSL更新。

    sudo apt-get install openssl

  3. 我可以更新只能通過該指令捲曲。 http://pavelpolyakov.com/2014/11/17/updating-php-curl-on-ubuntu/ curl 7.47.1版本

  4. 我更新了libcurl。 http://juniway.blogspot.com/2015/12/curl-48-unknown-option-was-passed-in-to.html

2

其中的一個原因這個錯誤是如老版本的PHP和OpenSSL的PHP 5.3.5會導致這個錯誤。

解決方案,更新PHP(推薦> = 7)。