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

Mac*_*ity 0 php ssl curl paypal paypal-ipn

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

SSL连接错误

它为什么停止工作?

Mac*_*ity 6

去年,PCI-DSS 3.1问世,所有处理信用卡的人都发生了重大变化.具体而言,要求所有处理必须仅在TLS 1.1或更高版本上完成.原始日落日期是2016年6月30日,但是被推迟到2018年6月30日

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

现在,虽然这个缓解给你,程序员,你的前端有一些呼吸的空间,但它仍然意味着转移到TLS 1.1+不是可选的(事实上,如果我是你,我会更快地移动)和一些中级卡处理将比这更快地开始移动.事实证明,PayPal是其网站之一

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连接.

现在,从理论上讲,你的旧脚本(如果你没有存储PayPal的公钥)应该运行得很好,但Sandbox(已经转移到这个)通信已经开始失败了.我发现,由于各种原因,一些通信层(特别是PHP中的CURL,一种与PayPal交谈的常见方式)无法再与PayPal正确协商.因此,你得到了神秘的错误

SSL连接错误

谢谢CURL.这很有帮助...... (不是)

那么我们如何解决这个问题呢?好吧,如果我们告诉CURL只使用TLS 1.2,那么您对PayPal的调用应该会重新开始工作而不会出现问题.如果你正在使用PHP和CURL,你可以通过添加它来实现它($ch你的CURL处理程序在哪里)

curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLS 1.2
Run Code Online (Sandbox Code Playgroud)

使用Sandbox和Live调用PayPal时,此更改非常安全.