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.htmlcurl_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);