PHP CURL CURLOPT_SSL_VERIFYPEER ignored Ask Question

PHP CURL CURLOPT_SSL_VERIFYPEER ignored Ask Question

For some reason I am unable to use CURL with HTTPS. Everything was working fine untill I ran upgrade of curl libraries. Now I am experiencing this response when trying to perform CURL requests: Problem with the SSL CA cert (path? access rights?)

Following suggestions posted here on related issues I have tried to do the following:

  • Disable verification for host and peer

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
    
  • Enable CURLOPT_SSL_VERIFYPEER and point to cacert.pem downloaded from http://curl.haxx.se/docs/caextract.html

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);  
    curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
    
  • I also tried to do the same thing with positiveSSL.ca-bundle which was provided as bundle CA certificate for the server I am trying to connect to.

  • php ini設定を編集しますcurl.cainfo=cacert.pem(同じディレクトリにあり、Apacheからアクセス可能なファイル)

  • 名前/etc/pki/nssdbを変更/etc/pki/nssdb.old

残念ながら、上記のいずれも私の問題を解決できず、「SSL CA 証明書に問題があります (パス? アクセス権?)」というメッセージが常に表示されます。

そして、そもそもこの検証は必要ありません (セキュリティの問題は認識しています)。

他に何か提案はありますか?

アップデート

最新のライブラリに更新し、Apache だけでなくボックス全体を再起動すると、すべてが再び動作するようになったようです。

ベストアンサー1

ドキュメントによると、ホストまたはピアの証明書を検証するには、CURLOPT_CAINFOオプションを使用して代替証明書を指定するか、 オプションを使用して証明書ディレクトリを指定する必要がありますCURLOPT_CAPATH

こちらもご覧くださいCURLOPT_SSL_VERIFYHOST:

  • 1 SSL ピア証明書に共通名が存在するかどうかを確認します。
  • 2 共通名の存在を確認し、指定されたホスト名と一致することを確認します。

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

おすすめ記事