PHPのcURLでSSL問題が発生する場合の対処
事象
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
というException
条件
原因
証明書がない
対応
概要
証明書の場所
see http://curl.haxx.se/libcurl/c/libcurl-errors.html
と丁寧に書いてあるので以下公式サイトへ。
curl.se
- ナビバーの [Documentation] をマウスオーバーして [CA bundle]
- ナビバーの [Documentation] -> [Protocols] -> [CA bundled extracted]
上記どちらかで遷移したページの [cacert.pem] をクリックしてDL
面倒なら これポチってDL
http://curl.haxx.se/ca/cacert.pem
証明書設定
php.iniに書く。php.iniどこだ?ってなったら php --ini
叩けば教えてくれる。
php.iniの中に
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. ; curl.cainfo =
となっている部分があるので、curl.cainfo =
のコメントを外して 絶対パスでダウンロードしたパスを入れる。
注意
パス名をダブルクォーテーションで囲っている記事をよく見たので試した。 結果として、対話形式(Laravelでのtinker etc)での直接通信は可能だったが、アプリから呼んだ場合は本記事のエラーと同じになった。 なので、ダブルクォーテーション外そうね。 ※ パスにスペースがあったらどうするんだろう?詰むのかな。
最後に
以上で、無事通信完了。 今回はSlackのwebhookを試しました。