1. ホーム
  2. php

[解決済み】cURL エラー 60: SSL 証明書: ローカルの発行者証明書を取得できない

2022-03-29 09:11:45

質問

Stripeを使用してAPIリクエストを送信しようとしていますが、エラーメッセージが表示されます。

cURL error 60: SSL certificate problem: unable to get local issuer certificate

これは私が実行しているコードです。

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 Error 60 SSL を修正する方法

これは、私のcURLオプションにこれらの行を追加することを示唆している。

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

cURLのオプションはどこで追加するのですか?私のCLIでは"curl_setopt"というコマンドが見つからないので、どうやらコマンドラインからではなさそうです。

解決方法は?

この問題の解決方法

  • をダウンロードし、解凍します。 cacert.pem の説明に従ってください。 https://curl.se/docs/caextract.html

  • をファイルシステムのどこかに保存してください(例えば、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 )