PayPal API 的“无可用协议”SSL 问题

Posted

技术标签:

【中文标题】PayPal API 的“无可用协议”SSL 问题【英文标题】:"No protocols available" SSL Issue with PayPal API 【发布时间】:2016-04-29 18:34:14 【问题描述】:

PayPal 沙盒和 php SDK 存在一些问题,到目前为止(或至少在过去 2 或 3 天)一直运行良好。我正在通过 SDK(使用 cURL)联系沙箱。

错误:140740BF:SSL 例程:SSL23_CLIENT_HELLO:没有可用的协议

据我了解,PayPal 就在最近(2016 年 1 月 19 日至 20 日)更新了他们的沙箱,只接受 TLS 1.2(为计划在几个月后对其生产环境进行同样的更改做准备)。

我在 Ubuntu 12.04 上,这是我尝试过的

将 openssl 升级到可用的最新版本 升级 PayPal PHP SDK 版本 正在升级 cURL 版本(原为 7.22,从源代码构建 7.46,并通过检查“curl_version();”输出确认 PHP 正在使用该版本。 更改为以下 PayPal SSL 配置值

CURLOPT_SSLVERSION => 6

CURLOPT_SSL_CIPHER_LIST => 'TLSv1'

以前 CURLOPT_SSLVERSION 设置为“3”(旧的、已弃用的 SSL v3)。我收到了这条消息:

错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

将 CURLOPT_SSLVERSION 更新为“6”(TLS 1.2)后,我收到了我第一次提到的错误(“没有可用的协议”)。

我今天在 Google 上进行了数小时的广泛搜索,但没有取得任何进展。我不确定这是 PayPal 方面的问题还是我的问题。如果有人有任何想法可以为我指明正确的方向,那就太好了。

谢谢

【问题讨论】:

@mjz19910 谢谢,刚刚检查过,但是似乎是正确的。 api-3t.sandbox.paypal.com/2.0,据此页面developer.paypal.com/docs/classic/api/endpoints 【参考方案1】:

我在大约 12 小时前发现了另一个问题,导致了同样的错误

将 ssl 密码列表设置为 DEFAULT。

【讨论】:

嗯,试过了,但我仍然看到问题【参考方案2】:

毕竟是过时的 cURL 版本,无法支持 TLS 1.2 连接。我在 Ubuntu 12.04 上,它只支持 cURL 7.22。我曾提到尝试升级 cURL(从源代码进行),但认为我没有正确设置它或正确重新加载我的配置。能够通过在显示相同症状的第二台机器上升级 cURL 来确认修复

【讨论】:

【参考方案3】:

我遇到了类似的问题,我的解决方案是更新 curl 和 openssl:

sudo add-apt-repository ppa:rsrchboy/ppa
sudo apt-get update
sudo apt-get --only-upgrade install curl openssl libssl1.0.0 libssl-dev

如果您想检查您的系统是否会连接到贝宝沙盒,请尝试(升级前后):

curl -v https://api.sandbox.paypal.com

你应该可以使用

CURLOPT_SSLVERSION => 6

现在。

【讨论】:

以上是关于PayPal API 的“无可用协议”SSL 问题的主要内容,如果未能解决你的问题,请参考以下文章

Paypal REST API 沙盒 - SSL 连接错误

PayPal API,HttpWebRequest 抛出 SSL WebException

TLS 1.2 升级 errno 54 后 PayPal 沙箱 API SSL 错误

PayPal:与远程服务器的 SSL 握手期间出错

我的 PayPal 脚本突然停止验证 SSL 证书

Paypal Access - SSL 证书:无法获取本地颁发者证书