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 API,HttpWebRequest 抛出 SSL WebException