web-dev-qa-db-ja.com

間違った場所でCAを探しているcURL

Redhat Linuxでは、PHPスクリプトで、cURLオプションを次のように設定しています。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True);
curl_setopt($ch, CURLOPT_CAINFO, '/home/andrew/share/cacert.pem');

しかし、データを送信しようとすると、この例外が発生します

(curl error: 77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none

/etc/pki/tls/certs/ca-bundle.crtでCAfileを検索するのはなぜですか?どこにも設定していないので、このフォルダがどこから来ているのかわかりません。

私が指定した場所、/home/andrew/share/cacert.pemを見ているべきではありませんか? /etc/の書き込み権限がないので、ファイルをコピーするだけのオプションはありません。使用すべき他のカールオプションがありませんか?

(これは共有ホスティング上にあります-CAfileに別のパスを設定することを禁止している可能性はありますか?)

1
andrewtweber

CURLOPT_CAINFOをCURLOPT_CAPATHに置き換えてみてください。

また、SSLCERTオプションもご覧ください。

2
Zim3r