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

2022-08-30 06:04:29

我正在尝试使用 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');
}

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

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

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

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

我也尝试过这个修复:如何修复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”


答案 1

如何解决这个问题:

  • 按照 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"
  • 重新启动您的Web服务器(例如Apache)和PHP FPM服务器(如果适用)

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


答案 2

注意Wamp /Wordpress/Windows用户。我有这个问题几个小时,甚至没有正确的答案为我做这件事,因为我编辑了错误的php.ini文件,因为这个问题是针对XAMPP而不是WAMP用户的,即使问题是针对WAMP的。

以下是我所做的:

  1. 下载证书捆绑包。

  2. 把它放在里面C:\wamp64\bin\php\your php version\extras\ssl

  3. 内部,确保文件存在C:\wamp64\bin\apache\apache(version)\modulesmod_ssl.so

  4. 在 Apache 目录内,启用于C:\wamp64\bin\apache\apache2.4.27\confmod_sslhttpd.conf

  5. 在 中启用。请注意,我的问题是我有两个php.ini文件,我需要在它们中都这样做。第一个可以位于此处的 WAMP 任务栏图标内。php_openssl.dllphp.ini

    enter image description here

    另一个位于C:\wamp64\bin\php\php(Version)

    找到两个文件的位置,找到该行并为其提供如下所示的路径php.inicurl.cainfo =curl.cainfo = "C:\wamp64\bin\php\php(Version)\extras\ssl\cacert.pem"

  6. 现在保存文件并重新启动服务器,您应该很高兴


推荐