【问题标题】:PHP/CURL - Stripe TLS 1.0 ErrorPHP/CURL - 条纹 TLS 1.0 错误
【发布时间】:2017-03-15 16:52:12
【问题描述】:

我已经建立了一个使用 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 (Latest)

【问题讨论】:

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


    【解决方案1】:

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

    我们现在遇到的问题是,当您的服务器与 Stripe 的服务器联系时,它默认协商 TLS 1.0 而不是 TLS 1.2。由于 Stripe 将弃用使用 TLS

    我在这里建议您与您的虚拟主机商讨论此问题,以便他们可以帮助您检查您的设置并确保您确实支持从您的服务器到 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 库更新到当前版本,看看是否能解决您的问题。

    【讨论】:

    • 感谢 Zach,不幸的是,由于我的 Stripe 帐户是相当新的,我已经强制执行 TLS 1.2 限制,因此我目前处于困境。我还更新了 Stripe PHP 框架的最新版本,以确保库是最新的,但仍然收到相同的错误。
    • 我昨天联系了我的虚拟主机,他基本上说服务器目前确实支持 TLS 1.2,所以很可能我必须以某种方式启用它,他们所能提供的只是禁用 TLS 1.0和 1.1,希望它会触发 TLS 1.2,但我不确定这会有所帮助,并担心它可能会影响我的其他一些托管网站。
    【解决方案2】:

    问题出在我的本地颁发者证书上,结果证明我是在正确的轨道上。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-01
      • 2016-05-04
      • 2016-05-07
      • 2020-02-10
      • 2022-01-09
      • 2019-03-04
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多