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

时间:2016-03-16 20:15:57

标签: php ssl curl paypal paypal-ipn

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

  

SSL连接错误

为什么它停止工作?

1 个答案:

答案 0 :(得分:6)

去年,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(目前为1.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连接。

现在,从理论上讲,您的旧脚本(假设您没有存储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

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