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

Posted

技术标签:

【中文标题】我的 PayPal 脚本突然停止验证 SSL 证书【英文标题】:My PayPal script suddenly stopped verifying the SSL certificate 【发布时间】:2016-07-02 22:42:30 【问题描述】:

所以我的脚本(IPN 侦听器、API 调用等)工作正常,但突然开始抛出无法验证 SSL 证书的错误。这是我的错误(显示 php CURL)

SSL 连接错误

为什么它停止工作了?

【问题讨论】:

【参考方案1】:

去年,PCI-DSS 3.1 came out,所有处理信用卡的人都发生了重大变化。具体来说,所有处理都必须在 TLS 1.1 或更高版本上完成。最初的日落日期是 2016 年 6 月 30 日,但那是 postponed to June 30, 2018

支付卡行业安全标准委员会 (PCI SSC) 将迁移完成日期延长至 2018 年 6 月 30 日,以便从 SSL 和 TLS 1.0 过渡到安全版本的 TLS(当前为 v1.1 或更高版本)。

现在,虽然这种暂缓让程序员在前端方面有一些喘息的空间,但这仍然意味着迁移到 TLS 1.1+ 不是可选的(事实上,如果我是你,我会更早迁移)并且一些中间卡处理将比这更快开始移动。事实证明,PayPal 就是其中之一moving in regards to its websites

TLS 1.2 升级

当今在网络上共享信息的最安全协议是传输层安全 (TLS) 版本 1.2。 PayPal 正在为所有安全连接启用对 TLS 1.2 的支持,并且在 2016 年将开始要求使用它。您将需要验证您的环境是否支持 TLS 1.2,并在必要时进行适当的更新。 PayPal 将在 2016 年 6 月 17 日更新其服务,要求所有 HTTPS 连接使用 TLS v1.2。此后,所有 TLS v1.0 和 TLS v1.1 API 连接都将被拒绝。 p>

现在,理论上,您的旧脚本(前提是您没有存储 PayPal 的公钥)应该可以正常运行,但沙盒(已经移至此)通信已经开始失败。我发现,由于各种原因,某些通信层(特别是 PHP 中的 CURL,一种与 PayPal 交谈的非常常见的方式)无法再与 PayPal 进行正确协商。因此,你得到了神秘的错误

SSL 连接错误

感谢卷曲。这很有帮助... (不)

那么我们如何解决这个问题?好吧,如果我们告诉 CURL 只使用 TLS 1.2,您对 PayPal 的调用应该会再次开始工作而不会出现问题。如果您使用的是 PHP 和 CURL,您可以通过添加类似($ch 是您的 CURL 处理程序)来做到这一点

curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLS 1.2

此更改可完全安全地用于沙盒和实时调用 PayPal。

【讨论】:

我们不得不用不支持 TLS1.1 的旧 curl 版本升级旧服务器 - 底部很痛苦

以上是关于我的 PayPal 脚本突然停止验证 SSL 证书的主要内容,如果未能解决你的问题,请参考以下文章

PayPal IPN 通知:SSL 证书验证失败

Paypal IPN:证书验证失败

Perl PayPal IPN 侦听器返回“500 SSL 握手失败”消息

Easy_install 或 pip 安装错误:[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:579)]

influxdb 2.0 证书验证失败:证书已过期 (_ssl.c:1129)

Paypal Sandbox 突然停止发送 IPN