PHP PayPal 错误: 14077410: SSL例程: SSL23_GET_SERVER_HELLO: sslv3 警告握手失败。

27
今天一个使用 PHP 5.5 的网站突然出现了错误,错误信息如下:
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
我尝试了很多不同的解决方案,但都没有找到解决方法。在这里有一个关于 MAMP SSL 错误的帖子(MAMP SSL error: "error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure")。其中建议将 CURLOPT_SSL_VERIFYPEER 设置为 false,但我试了也没用。我还尝试了许多 sslversion 和 cipher_list,但也没有成功。就像我所说的,在几天前没有这个问题,可能与版本 1.6.4 有关。有什么想法吗?

1
是的,我也遇到了同样的问题,使用omipay PHP库。 - user3538235
3
您好,我在PayPal沙盒中遇到了同样的问题。能否提供解决方案帮助我解决这个问题? - Mahahari
我在我的网站上也遇到了沙盒的同样问题... - Chirag Patel
我遇到了同样的问题。 我的设置支持SHA256和G5,并运行在PHP 5.3上... 有人知道一个可行的解决方案吗? - desloovere_j
4个回答

18
如果您指向沙盒服务器,最近进行了一些更新,会导致特定的错误。下面是来自PayPal Merchant Technical Support Microsite关于SHA-256升级的信息和链接:

支持SHA-256。 PayPal正在将所有Live和沙盒端点上的SSL证书从SHA-1升级到更强大、更健壮的SHA-256算法。您需要更新您的集成以支持使用SHA-256的证书。
停止使用VeriSign G2根证书。根据行业标准,PayPal将不再接受需要VeriSign G2根证书进行信任验证的安全连接。只有那些期望我们的证书/信任链由G5根证书签名的安全连接请求才会导致成功的安全连接。

直接来自PayPal MicroSite: SSL证书升级

On January 19-20, 2016 The Sandbox endpoints will be upgraded to new SHA-256, 2048-bit certificates:

api.sandbox.paypal.com
api-3t.sandbox.paypal.com
api-aa.sandbox.paypal.com
api-aa-3t.sandbox.paypal.com
svcs.sandbox.paypal.com
pointofsale.sandbox.paypal.com
ipnpb.sandbox.paypal.com
www.sandbox.paypal.com (for IPN)

这里是PayPal用户指南的链接,其中详细说明了如何将您的证书更改为G5根证书。


1
检查您拥有哪种证书,并按照此指南的说明,从G2更改为G5根证书。 - pp_MSI_Jenn
2
很抱歉,我还是不明白,完全不懂。我的代码一直在运行,没有任何问题,现在他们谈论认证和新的终端点,我不知道我需要编辑什么才能使它工作。我真的不知道。$API_Endpoint = "https://api-3t".$paypalmode.".paypal.com/nvp"; 我有这一行关于一个终端点,$paypalmode 包含沙盒或实时,这就是我所能看到的。它需要更改吗?最糟糕的部分是它在本地主机上可以工作但在线上却不能。 - Dunnow
如果这是真的,那么为什么我现在才遇到这个问题? - That1Guy

1
我将我的PHP服务器从5.4升级到7.0,错误消失了。

0

通过在我的 Mac 上重新安装 PHP 7,我的问题得到了解决。检查您拥有的 libcurl 版本是否是最新的也可能值得一试。


0

所以已经解决了握手失败的问题。这是由于 PHP 版本引起的。一旦升级到 PHP 5.5,就解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接