PHP / CURL - 条带TLS 1.0错误

时间:2016-11-02 11:31:45

标签: php ssl curl stripe-payments tls1.2

我使用Stripe支付系统组建了一个网站。 通过HTTPS进行测试付款后,我收到错误:

  

Stripe不再支持使用TLS 1.0发出的API请求。请使用TLS 1.2或更高版本启动HTTPS连接。

我已确保所有版本的软件都是最新的:

PHP版本:7.0.7

cUrl版本:7.47.1

SSL版本:OpenSSL / 1.0.2h

我还在https://www.ssllabs.com/ssltest/analyze.html上测试了我的网站本身,以确保服务器上启用了TLS 1.2功能。

我唯一能想到的是,我在php.ini(CURL curl.cainfo设置)中注册的证书包可能存在问题,但是因为Stripe源已经包含了“ca-certificates.crt”我不确定我是否需要在我的php.ini文件中为curl.cainfo设置一个条目。

任何建议都会受到大力赞赏。如果我可以提供任何可能有帮助的其他信息,请告诉我。

编辑:目前正在使用Stripe的PHP Framework v4.1.1(最新版)

2 个答案:

答案 0 :(得分:1)

您提到的SSL证书由服务器用于响应传入的请求。这意味着,如果我作为客户访问您的网站,我的浏览器(Chrome)将默认尝试通过TLS 1.2与您的服务器通信,因为它首先使用最安全的协议。您的服务器显然能够通过TLS 1.2回复请求。

我们现在遇到的问题是,当您的服务器与Stripe的服务器联系时,它会默认协商TLS 1.0而不是TLS 1.2。由于Stripe将弃用使用TLS< 1.2这意味着如果你不升级,你的请求将在明年开始失败。

我在此建议的是与您的虚拟主机聊天,以便他们可以帮助您查看您的设置,并确保您支持从服务器到Stripe的TLS 1.2请求。此外,您可以按照https://support.stripe.com/questions/how-do-i-upgrade-my-stripe-integration-from-tls-1-0-to-tls-1-2中列出的步骤操作,以确保您的代码库也支持TLS 1.2。

这也可能是由Stripe的PHP库的过时版本引起的。他们在7月29日周五发布了版本3.19.0,它纠正了一个影响某些设置的错误,这可能解释了为什么即使您的主机支持TLS 1.2也会导致此错误。您也可以尝试将正在使用的Stripe PHP库更新到当前版本,看看是否能解决您的问题。

答案 1 :(得分:0)

问题在于我的本地发行人证书,结果证明我在正确的轨道上。

必须在我的php.ini文件中为curl_cainfo设置一个默认值并修复它。