所以我的脚本(IPN侦听器,API调用等)工作正常,但突然开始抛出一个关于无法验证SSL证书的错误。这是我的错误(显示了PHP CURL)
SSL连接错误
为什么它停止工作?
答案 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时,此更改非常安全。