【问题标题】:Braintree PHP SDK cURL exceptionBraintree PHP SDK cURL 异常
【发布时间】:2017-04-29 07:17:00
【问题描述】:

当我尝试使用Braintree_ClientToken::generate() 生成客户端令牌时,我不断收到Braintree_Exception_SSLCertificate 异常。我已经加载了 SDK,并且我的 PHP 设置似乎满足了 SDK 的最低要求。

我正在运行的 PHP 和 cURL 的版本是:

PHP 5.5.3

cURL 7.32.0 与 OpenSSL/1.0.1e。我的 cURL 模块中启用了 SSL。

我注意到 Braintree 正在执行 TLS 1.2,所以我认为这可能是问题所在,但我尝试在 Braintree SDK 的 Http.php 中添加以下行:

curl_setopt($curl, CURLOPT_SSLVERSION, 6);

这应该将 cURL 设置为使用 TLS 1.2,但它似乎没有帮助,我不确定如何验证设置是否生效。

我还没有成功地向 Braintree 的 API 发出请求,所以我担心这是我做错了,或者我使用的 cURL 版本不好。是否需要启用我错过的 SSL?

谢谢, 布拉德。

【问题讨论】:

  • 你找到解决办法了吗?
  • 不,还没有。我打算尝试更新我的 curl 和/或 OpenSSL 版本,但还没有完成。今晚可能试试。
  • 是的,我也在尝试。 Braintree 已更新到 tls1.0,这就是为什么老停止工作.. 所以必须更新 openssl 1.0.1 及更高版本..
  • 我已经更新到 MAMP PRO 4(它有 openssl 1.0.1^),它现在又开始工作了。希望你也可以让它工作。

标签: php api ssl curl braintree


【解决方案1】:

完全披露:我在 Braintree 工作。如果您还有任何问题,请随时联系support。

您使用的 cURL 版本可能是您的问题,因为 libcurl 版本应该大于 7.40。我建议更新到此版本,因为在该版本及更高版本中添加了 TLS 1.2 支持。

此外,github link 将带您完成 Braintree 所需的流程,以使您的 PHP 集成与 TLS 1.2 保持同步。我之所以提到这一点,是因为您想要一种方法来检查您的 cURL 是否被设置为实例化 TLS 1.2。

这样做的方法是: php -r 'echo json_encode(curl_version(), JSON_PRETTY_PRINT);'

【讨论】:

  • 感谢您的链接,它确实很有帮助。这导致了经典的雪球效应,升级一件事需要升级另一件事(和另一个)。最后,我升级到了更新版本的 Ubuntu,这意味着新的 PHP、新的 cURL、新的一切。但是我非常有信心 cURL 版本是主要问题。我现在使用 cURL v7.47.0,我能够连接到 API 并顺利顺利地处理事务。惊人的!再次感谢您的帮助。
【解决方案2】:

好的,我刚刚爬过喜马拉雅山。上面的解决方案根本不是解决方案。这是我为解决这个问题所做的。对于 Centos 7 机器,yum update 有时是无用的。唯一的解决方案是手动更新 OpenSSL 和 Curl。

共有 15 个步骤:

下载最新的 OpenSSL 包。

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz

解压

tar -xzvf openssl-1.0.2l.tar.gz

进入文件夹

cd openssl-1.0.2l

配置

./config --shared 

安装

make && make install

这还没有结束,你还必须更新 curl。下载最新版本的 curl。

wget https://curl.haxx.se/download/curl-7.55.1.tar.gz

解压

tar -xzvf curl-7.55.1.tar.gz

进入文件夹

cd curl-7.55.1

设置库路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib

配置

./configure --prefix=/usr/local/curl/ --without-nss --with-ssl=/usr/local/ssl/

安装

make && make install

备份一下

mv /usr/bin/curl /usr/bin/curl.bak

链接

ln -s /usr/local/curl/bin/curl /usr/bin/curl

最后,检查你的 curl 版本

curl --version

如果您正确执行了所有这些步骤,它会显示

curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2l

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多