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

新手上路,请多包涵

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

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

这是我正在运行的代码:

 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 中的部分:

 curl.cainfo = "C:\Windows\cacert.pem"

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

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

我也试过这个修复: 如何修复 PHP CURL 错误 60 SSL

这表明我将这些行添加到我的 cURL 选项中:

 curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);

在哪里向我的 cURL 添加选项?显然不是通过命令行,因为我的 CLI 找不到命令“curl_setopt”

原文由 LoveAndHappiness 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 818
2 个回答

如何解决这个问题呢:

  • 按照 https://curl.se/docs/caextract.html 中的说明下载并提取 cacert.pem

  • 将它保存在文件系统的某个地方(例如,XAMPP 用户可能使用 C:\xampp\php\extras\ssl\cacert.pem

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

 [curl]
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"

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

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

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

原文由 Dung 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于那些试图在本地计算机上使用 Wordpress 的应用程序密码功能的人。您需要更新 wp-includes\certificates\ca-bundle.crt

在文本编辑器中打开此文件并附加您的服务器证书。

  1. 打开您的自签名证书 (.crt) 文件并

  2. 复制所有之间和包括

—-开始证书—–

—–结束证书—–

  1. 粘贴在 wp-includes\certificates\ca-bundle.crt 的末尾

原文由 Mooze 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题