我在PHP中使用curl库(使用NSS)连接到我的其他服务器.直到上周,由于poodle漏洞(顺便说一下CloudFlare),目标服务器停止支持SSLv3,一切都很好.现在,我正在尝试使用TLS建立连接,但我仍然遇到"SSL连接错误".
有一些示例代码,我正在使用:
$ch = curl_init();
curl_setopt_array( $ch, array(
CURLOPT_URL => 'https://www.lumiart.cz',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSLVERSION => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_VERBOSE => true
) );
$output = curl_exec( $ch );
echo $output;
print_r( curl_getinfo( $ch ) );
echo 'error:' . curl_error( $ch );
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
从我的理解,设置CURLOPT_SSLVERSION
于1
应强制通过TLS连接.
注意:CURLOPT_SSL_VERIFYPEER => false
一旦我解决了这个问题,我只是为了进行调试而且我不想将它留在那里.
这是输出:
Array
(
[url] => https://www.lumiart.cz
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0 …
Run Code Online (Sandbox Code Playgroud) 我已经在一个网站上工作了很长一段时间,这个网站很大程度上依赖于Paypal正常工作.没有它,它真的没用.
我早上大约凌晨1点(我在CET时区),一切都很完美,我完善了代码,功能,并且工作正常.我睡觉之前做了三次检查,一切正常.
我早上醒来,没有任何与Paypal有关的事实.在向您展示实际代码和错误之前,先对我使用的内容进行一些解释.我正在使用Express Checkout和Paypal Adaptive Payments SDK.
我在developer.paypal.com上创建了一些"虚拟"帐户,以模拟协调人(所有者)和买家互动,因为我有业主向用户提供资金的情况,反之亦然.无论如何,他们都工作得很好,现在他们都抛出了这个错误(在自适应支付SDK中,它告诉我哪一行代码是错误的,在Express Checkout中,因为那是通过文档完成的代码,它不显示在哪个文件中错误但是它是相同的错误):
'错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败'
现在我看到这篇文章https://devblog.paypal.com/poodle-ssl-3-0-vulnerability/后你完全禁用了SSL,我意识到问题实际上就在于此.您希望您的用户现在使用TLS,这完全没问题.我三重检查我的服务器启用了TLS,它确实改变了(已经超过一百万次)我的配置设置使用cURL中的TLS(因为我正在使用PHP)通过执行以下操作:
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
(这就是Express Checkout和自适应支付中的样子,它只是一个关联数组,但它们两者都是一样的)
我还在某处和你的建议中找到了实际更新我的api凭据.我做到了 我去了paypal.com - > API,然后点击了更新工作,但后来我注意到在我的developer.paypal.com帐户中我有一些虚拟帐户没有任何改变.我应该手动更新这些还是什么?
编辑:
这被发送到Paypal支持,我真的很匆忙,不能再写完整个东西了,很抱歉!问题是固定感谢的人究竟是谁花时间来阅读.
通过添加CURLOPT_SSL_CIPHER_LIST => 'TLSv1'
到我的PPHttpConfig.php文件修复了该问题!:)