gpt4 book ai didi

php - 如何在不下载证书的情况下修复 Curl 错误 60

转载 作者:太空宇宙 更新时间:2023-11-03 13:50:20 28 4
gpt4 key购买 nike

我在 PHP 中使用 Rackspace API,它刚刚停止工作(3 天前一切正常)。它使用 guzzle,后者使用 curl。 curl 刚刚停止工作。

[Thu Jun 21 14:55:36 2018] [error] [client xxx.xx.xxx.xx] PHP Fatal error:  Uncaught exception 'Guzzle\\Http\\Exception\\CurlException' with message '[curl] 60:  [url] https://identity.api.rackspacecloud.com/v2.0/tokens' in 

/var/www/passline.com/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php:359\nStack trace:\n#0

/var/www/passline.com/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(292): Guzzle\\Http\\Curl\\CurlMulti->isCurlException(Object(Guzzle\\Http\\Message\\EntityEnclosingRequest), Object(Guzzle\\Http\\Curl\\CurlHandle), Array)\n#1

/var/www/passline.com/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(257): Guzzle\\Http\\Curl\\CurlMulti->processResponse(Object(Guzzle\\Http\\Message\\EntityEnclosingRequest),
Object(Guzzle\\Http\\Curl\\CurlHandle), Array)\n#2

/var/www/passline.com/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(240): Guzzle\\Http\\Curl\\CurlMulti->processMessages()\n#3

/var/www/passline.com/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(224): Guzzle\\Http\\Curl\\CurlMulti->executeHandles()\n#4

/var/www/passline.com/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(111)

错误的重要部分如下:

[curl] 60: [url] https://identity.api.rackspacecloud.com/v2.0/tokens

我从 Curl 收到错误 60,这意味着 SSL 证书错误。大多数回答说这个问题的解决方案是:停用 ssl 或下载新证书。

curl: (60) SSL certificate : unable to get local issuer certificate

https://es.stackoverflow.com/questions/174276/curl-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate-url-h

我不会停用 SSL,我不能使用 http 而不是 https,我想避免必须进入机器并下载新证书。

如果有一天我再次获得旧证书,我的网站将停止工作。解决此问题的正确方法是什么?

此服务器有 CenOs 6,我们使用 PHP 5.3.3 和 curl 7.19.7

---- 编辑----

所以,我的问题是因为 curl 证书的变化。来自 https://curl.haxx.se/docs/caextract.html

This bundle was generated at Wed Jun 20 03:12:06 2018 GMT .

linux 上有一个名为 update-ca-certificates 的工具可以解决这个问题,另外,curl 站点说你可以运行

curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem

但是,我不知道,总有一天我会看到系统停止正常工作,我会进入机器并运行这个命令,仅此而已?,其他人做什么?,设置一个 cron用这个命令?或者什么?

最佳答案

旧版本的 Guzzle 使用与 Guzzle 库捆绑在一起的自己的 CA 文件。它将使用该文件而不是系统的 (/etc/pki/tls/certs)。

如果您可以从命令行使用 cURL 进行操作,但在 Guzzle 中出现此错误,这很可能是罪魁祸首。

在 2014 年底默认使用系统 CA 包。

https://github.com/guzzle/guzzle/issues/623

https://github.com/guzzle/guzzle/pull/800

描述了较新(> 3.0 ?)版本的行为 here (查看验证配置标志):

  1. Check if openssl.cafile is set in your php.ini file.
  2. Check if curl.cainfo is set in your php.ini file.
  3. Check if /etc/pki/tls/certs/ca-bundle.crt exists (Red Hat, CentOS, Fedora; provided by the ca-certificates package)
  4. Check if /etc/ssl/certs/ca-certificates.crt exists (Ubuntu, Debian; provided by the ca-certificates package)
  5. Check if /usr/local/share/certs/ca-root-nss.crt exists (FreeBSD; provided by the ca_root_nss package)
  6. Check if /usr/local/etc/openssl/cert.pem (OS X; provided by homebrew)
  7. Check if C:\windows\system32\curl-ca-bundle.crt exists (Windows)
  8. Check if C:\windows\curl-ca-bundle.crt exists (Windows)

关于php - 如何在不下载证书的情况下修复 Curl 错误 60,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973313/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com