【Laravel】guzzlehttpにてself signed certificateエラーの対処法

Laravelでよく使われるGuzzleHttpについて。

それを使っていて次のエラーに遭遇しました。

僕はローカル環境(XAMPP)で開発してたんですが、
ある事情でSSL化を試したらこのエラーが出てしまいました。

このエラーの解決に少してこずったので、
同じく悩んでいる人のために対処法を残しておきます。

謎のself signed certificateエラーの原因

僕はこういうコードを書いてました。

▼ 例えばこういう感じのコード

僕はフレームワークにLarabelを使っていて、その中でGuzzleHttpを使ってGETとかPOST送信をしてました。そしてとある事情があってSSL化を試したんです。(ちょうどこの記事を参考にしてSSLした : https://qiita.com/sutara79/items/21a068494bc3a08a4803)

▼ そしたら冒頭のエラーに遭遇

 

どうやらエラー内のリンクにヒントがある模様

▼ そのページではこう解説されている

CURLE_PEER_FAILED_VERIFICATION (60)

The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK. This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its previous value was 51.

引用元 : https://curl.se/libcurl/c/libcurl-errors.html

リモートサーバーのSSL証明書・SSHmd5フィンガープリントがNGみたいです。localhostに対してSSL証明書を作ったのですが、それが原因かもしれません。

このような localhost + SSL証明書 という組み合わせは色々な問題を引き起こしがちです。正直ここらへんには詳しくないし、ググっても何をすればいいか分からずに困りました。

解決策は'verify' => falseを設定するだけ

解決策は簡単でオプションを設定するだけです。

▼ 先ほどのコードを次のように改変

Curlでもそうだけど verifyオプションをfalseに設定するだけ

これだけでSSL関係のエラーは解決できます。

Laravelのエラー・覚え書きの関連記事

ついでというか蛇足ですが・・・

Laravel関連のエラー・設定などの関連記事について

▼ LaravelにてCacheエラー “Unable to create lockable file..”の解決策

▼ Laravelでのデータベース設定の正しい手順をメモしておく

▼ LaravelでのCORS設定のベストプラクティスは何なのか…2つの方法

以上、self signed certificateエラーの対処法でした。

LaravelでGuzzleHttpを使うときは少し注意が必要かも