PHP
curl
ca

php cURLを使う時、CA証明書が必須になってる

開発環境

  • Windows 10
  • XAMPP

phpで、file_get_contentsが便利すぎて使ってたんですけど、タイムアウトの設定ができないとかで最近は、cURLを使うといいよっていう記事がたくさん出てくるんですが、どうもうまく動かない。
ということで調べてみました。c

CA必須

CAとは、客室乗務員、、、ではなくて、Certification Authority。認証局のことです。その証明書が以下でダウンロードできます。

https://curl.haxx.se/docs/caextract.html

cacert.pem
というリンクがあるのでダウンロードします。

これを指定しないとphpでcURLが使えません。

サーバーだとたぶん、最初から入っているんじゃないかと思います。
古い場合はアップデートが必要です。

これは、認証局の情報で、SSL通信するときに、証明書のやり取りが行われて、正しいものかどうか判定するわけですがどこに問い合わせているかというと、認証局といわれるところです。
そこの情報が書かれたファイルがcacert.pemというファイルです。

ここに認証局の情報が入っているっていうことです。

対応について

一応、基本的なところは簡単に説明しますと
php.ini
にて
extensionで
curlとopenssl
を有効にする必要があります。

caを参照するには、opensslであるためです。
なので、opensslの設定箇所で以下のように記述します。これは、xampp/phpにファイルを配置したのでそのように指定しています。
確認する箇所は3か所ですね。

php.ini
extension=php_curl.dll
extension=php_openssl.dll

openssl.cafile= C:\xampp\php\cacert.pem

これで、webサーバーを再起動でOK。