2014-11-05 30 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)。