首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >cURL错误60: SSL证书:无法获取本地颁发者证书

cURL错误60: SSL证书:无法获取本地颁发者证书
EN

Stack Overflow用户
提问于 2015-04-23 19:54:21
回答 22查看 363.6K关注 0票数 291

我正在尝试使用条带发送API请求,但收到错误消息:

cURL错误60: SSL证书问题:无法获取本地颁发者证书

这是我正在运行的代码:

代码语言:javascript
复制
public function chargeStripe()
{
    $stripe = new Stripe;
    $stripe = Stripe::make(env('STRIPE_PUBLIC_KEY'));

    $charge = $stripe->charges()->create([
        'amount'   => 2900,
        'customer' => Input::get('stripeEmail'),
        'currency' => 'EUR',
    ]);

    return Redirect::route('step1');
}

我在谷歌上搜索了很多,很多人建议我下载这个文件:cacert.pem,把它放在某个地方,然后在我的php.ini中引用它。这是我的php.ini中的一部分:

代码语言:javascript
复制
curl.cainfo = "C:\Windows\cacert.pem"

然而,即使在多次重启服务器并更改路径后,我仍然收到相同的错误消息。

我在Apache中启用了ssl_module,在我的php.ini中启用了php_curl。

我也尝试过这个修复:How to fix PHP CURL Error 60 SSL

这建议我将以下行添加到我的cURL选项:

代码语言:javascript
复制
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);

我应该在哪里给我的cURL添加选项?显然不是通过命令行,因为我的命令行没有找到命令"curl_setopt“

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2016-01-20 01:27:40

如何解决这个问题:

按照https://curl.se/docs/caextract.html上的说明下载并解压

XAMPP用户可以使用C:\xampp\php\extras\ssl\cacert.pem)将其保存在您的文件系统中的某个位置(例如,

  • 用户可以使用C:\xampp\php\extras\ssl\cacert.pem)

  • 在您的php.ini中,将此文件位置放在[curl]部分(将其放在[openss]部分也是一个好主意):

代码语言:javascript
复制
[curl]
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"

[openssl]
openssl.cafile = "C:\xampp\php\extras\ssl\cacert.pem"

  • 重新启动FPM服务器(例如Apache)和PHP FPM服务器(如果适用)

(参考:https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate)

票数 611
EN

Stack Overflow用户

发布于 2018-01-29 00:43:38

Wamp/Wordpress/windows用户请注意。我有这个问题好几个小时了,甚至连正确的答案都没有为我解决,因为我编辑了错误的php.ini文件,因为这个问题是给XAMPP而不是给WAMP用户的,即使这个问题是给WAMP的。

下载certificate bundle.

将其放入C:\wamp64\bin\php\your php version\extras\ssl

php.ini中启用php_openssl.dll。请注意,我的问题是我有两个php.ini文件,我需要在这两个文件中执行此操作。第一个可以在你的WAMP任务栏图标里面找到。

找到这两个php.ini文件的位置,找到curl.cainfo =行,并为其指定如下路径

curl.cainfo = "C:\wamp64\bin\php\php(Version)\extras\ssl\cacert.pem"

现在保存文件并重新启动服务器,您就可以开始工作了

票数 103
EN

Stack Overflow用户

发布于 2015-07-07 03:14:44

如果你正在使用PHP5.6和Guzzle,Guzzle已经切换到使用PHP库自动检测证书,而不是它的进程(ref)。PHP概述了here的变化。

找出PHP/Guzzle在哪里寻找证书

您可以使用以下PHP命令转储PHP正在查找的位置:

代码语言:javascript
复制
 var_dump(openssl_get_cert_locations());

获取证书捆绑包

对于OS测试,您可以使用自制软件安装openssl brew install openssl,然后在您的php.ini或Zend Server设置中使用openssl.cafile=/usr/local/etc/openssl/cert.pem (在OpenSSL下)。

curl网站上的curl/Mozilla也提供了证书捆绑包:https://curl.haxx.se/docs/caextract.html

告诉PHP证书在哪里

一旦你有了一个包,要么把它放在PHP已经在查找的地方(你在上面找到了),要么在php.ini中更新openssl.cafile。(通常,在Unix上为/etc/php.ini/etc/php/7.0/cli/php.ini/etc/php/php.ini。)

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29822686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档