Laravelでよく使われるGuzzleHttpについて。
それを使っていて次のエラーに遭遇しました。
1 |
cURL error 60: SSL certificate problem: self signed certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://hogehoge.com/ |
僕はローカル環境(XAMPP)で開発してたんですが、
ある事情でSSL化を試したらこのエラーが出てしまいました。
このエラーの解決に少してこずったので、
同じく悩んでいる人のために対処法を残しておきます。
謎のself signed certificateエラーの原因
僕はこういうコードを書いてました。
▼ 例えばこういう感じのコード
1 2 3 4 5 6 7 8 9 10 |
$client = new \GuzzleHttp\Client(); $res = $client->get( $request->root().'/api/profiles', [ 'query' => [ 'user_id' => $user_id ], 'allow_redirects' => true ] ); $profile = json_decode($res->getBody())->response[0]; |
僕はフレームワークにLarabelを使っていて、その中でGuzzleHttpを使ってGETとかPOST送信をしてました。そしてとある事情があってSSL化を試したんです。(ちょうどこの記事を参考にしてSSLした : https://qiita.com/sutara79/items/21a068494bc3a08a4803)
▼ そしたら冒頭のエラーに遭遇
1 |
cURL error 60: SSL certificate problem: self signed certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://hogehoge.com/ |
どうやらエラー内のリンクにヒントがある模様
▼ そのページではこう解説されている
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.
リモートサーバーのSSL証明書・SSHmd5フィンガープリントがNGみたいです。localhostに対してSSL証明書を作ったのですが、それが原因かもしれません。
このような localhost + SSL証明書 という組み合わせは色々な問題を引き起こしがちです。正直ここらへんには詳しくないし、ググっても何をすればいいか分からずに困りました。
解決策は'verify' => falseを設定するだけ
解決策は簡単でオプションを設定するだけです。
▼ 先ほどのコードを次のように改変
1 2 3 4 5 6 7 8 9 10 11 12 |
$client = new \GuzzleHttp\Client(); $res = $client->get( $request->root().'/api/user-profiles', [ 'query' => [ 'user_id' => $user_id ], 'allow_redirects' => true, /// ↓これを追加するだけ 'verify' => false ] ); $profile = json_decode($res->getBody())->response[0]; |
Curlでもそうだけど verifyオプションをfalseに設定するだけ
これだけでSSL関係のエラーは解決できます。
Laravelのエラー・覚え書きの関連記事
ついでというか蛇足ですが・・・
Laravel関連のエラー・設定などの関連記事について
▼ LaravelにてCacheエラー “Unable to create lockable file..”の解決策
▼ Laravelでのデータベース設定の正しい手順をメモしておく
▼ LaravelでのCORS設定のベストプラクティスは何なのか…2つの方法
以上、self signed certificateエラーの対処法でした。
LaravelでGuzzleHttpを使うときは少し注意が必要かも