web-dev-qa-db-ja.com

cURLにはCURLOPT_SSL_VERIFYPEER = FALSEが必要です

LocalhostでcURLを最も長く使用していましたが、オプションCURLOPT_SSL_VERIFYPEER = FALSEを明示的に設定しない限り、cURLが機能しなくなったことに突然気付きました。

私はこれがどのように/いつ変更されたかわかりませんが、NGINXとPHPを使用しており、これが特定のリクエストされたホストに対する特定の問題ではないことを確認できます。 https://site1.comおよびhttps://different-site.com

誰もが考えている?

18
tim peterson

デイブ・チェンの提案のおかげで、私は自分の証明書を紛失したに違いないと気付きました。この問題は、cURL作成者(Mozillaから抽出)が提供するこの証明書によって解決されます。 https://curl.haxx.se/ca/cacert.pem

したがって、このcacert.pemファイルをプロジェクトにダウンロードした後、PHPでこれを実行できます。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");

または、これをphp.iniに以下を追加してグローバルに設定できます

curl.cainfo=/path/to/cacert.pem
35
tim peterson

WampServerを使用している場合、これに注意してください:

CURLOPT_CAINFOに絶対パスを入力する必要があります。次に例を示します。

curl_setopt ($ch, CURLOPT_CAINFO, 'C:\wamp\www\your-project\cacert.pem')

相対パスを使用しないでください:curl_setopt($ ch、CURLOPT_CAINFO、 'cacert.pem')機能しないため

3
LuisEduardox