LoginSignup
10
12

More than 5 years have passed since last update.

GuzzleHttpのClientでリクエスト送る時に、証明書の検証を回避する方法

Last updated at Posted at 2017-02-02

Qiita慣れていないため、見にくい所あったらすみません…。

・Laravel 5.3
・Guzzle 6.2

GuzzleHttpのClientを使ってとあるフロントサーバにアクセスに行く際に、開発中はレスポンスが返ってきてたのに、テストになるとなぜかエラーが出てしまってレスポンスが返って来なくなったので、メモ。

原因

結論から言うと、テストではフロントサーバに自己証明書を使ったSSLを導入していたため、でした。

どうやらGuzzleHttpのClientがcURLを叩く際に証明書の検証をしているらしく、自己証明だからダメっす、と言われていたようです。

解決策

やりたかったのは至極単純で、

$client = new GuzzleHttp\Client(['base_uri' => 'https://' . なんかドメイン . '/']);
$response = $client->request('get', '/check');

こんな感じなんですが、動かすと

cURL error 60: Peer's certificate issuer has been marked as not trusted by the user. (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

Laravelログにこんなのが出てました。

で、調べてみるとClientがcURLを叩く際に証明書の検証はデフォルトではそれがオンになっているらしい。それをオフにすることで、無事にレスポンスが返って来るようになりました。

$response = $client->request('get', '/check', ['verify' => false]);

テストで確認出来たら、コミットする時に外すの忘れないようにしないと…。

参考

▼本家ドキュメント
http://docs.guzzlephp.org/en/latest/request-options.html#verify

▼参考サイト
http://qiita.com/k-holy/items/4362b8cce85642e477ec

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12