我通过Laravel为我们的网站完成了一个omnipay-paypal实现。最近我无法使用我的任何沙盒帐户进行测试。我一直在收到SSL连接错误。 NSS错误-12286。有人遇到过这个问题吗?我已经检查过PayPal支持,他们已经标记了2016年1月19日解决的SSL问题。
以下是对api.sandbox.paypal.com的cli curl调用以及相应的错误。 有人面临同样的问题吗?
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
> -H "Accept: application/json" \
> -H "Accept-Language: en_US" \
> -u "xxx:xxxx" \
> -d "grant_type=client_credentials"
* About to connect() to api.sandbox.paypal.com port 443 (#0)
* Trying 173.0.82.78... connected
* Connected to api.sandbox.paypal.com (173.0.82.78) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -12286
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
答案 0 :(得分:8)
PayPal更新了其沙箱环境,仅允许TLS 1.2连接,以提高安全性并为将来的PCI合规做好准备。您可以在PayPal 2016 Merchant Security Roadmap Microsite上找到有关更新的更多信息。
如果您使用任何PayPal SDK,可以查看PayPal TLS Update repository以获取有关您可能需要的SDK或环境升级的信息。请注意,在命令行(例如PHP CLI)上运行与应用程序托管环境(例如Apache中的PHP模块)之间可能存在环境差异,因此请确保更新所有相关环境。
答案 1 :(得分:0)
您需要将--tlsv1.2
开关添加到curl
的某些版本。
更高版本(例如7.35.0)将自动正确地自动协商TLS 1.2。如果提供此切换,某些版本(例如7.19.7)将起作用,尽管man curl
报告它是在以后添加的:
--tlsv1.2
(SSL) Forces curl to use TLS version 1.2 when negotiating with a
remote TLS server. (Added in 7.34.0)