Guzzle Client で cURL error 60: SSL certificate problem: self signed certificate in certificate chain エラー

現象

XAMPP 上で Guzzle Client を利用しようとしたら以下のようなエラーが発生しました。

GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: self signed certificate in certificate chain (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://example.jp/

前提

この XAMPP 環境は以前XAMPPのPHPのバージョンをアップグレードする ( 7.1.7 → 7.4.3 )で PHP のバージョンを上げていました。

調査

XAMPP の PHP について php.ini を確認。

extension=curl

まずここはOK。

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =

あ、SSL証明書の指定がないですね。

ちなみに元々 XAMPP に入っていたバージョンの php.ini では

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="PATH:\TO\xampp\apache\bin\curl-ca-bundle.crt"

SSL証明書の指定がありました。

パス先にSSL証明書が存在していることを確認の上、パスを現行の php.ini に貼り付けます。

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =
curl.cainfo="PATH:\TO\xampp\apache\bin\curl-ca-bundle.crt"

これで XAMPP の Apache を再起動したところ、エラーは出なくなりました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。