140

何らかの理由で、HTTPSでCURLを使用できません。curlライブラリのアップグレードを実行するまで、すべてが正常に機能していました。CURLリクエストを実行しようとすると、次の応答が発生します: SSL CA証明書の問題(パス?アクセス権?)

関連する問題についてここに投稿された次の提案は、私が次のことをしようとしました:

  • ホストとピアの検証を無効にする

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
    
  • http://curl.haxx.se/docs/caextract.htmlCURLOPT_SSL_VERIFYPEERからダウンロードしたcacert.pemを有効にしてポイントします

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);  
    curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
    
  • 接続しようとしているサーバーのバンドルCA証明書として提供されているpositiveSSL.ca-bundleでも同じことを試みました。

  • curl.cainfo=cacert.pem(同じディレクトリにあり、apacheからアクセスできる)でphpini設定を編集します。

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

残念ながら、上記のいずれも私の問題を解決することはできず、SSL CA cert(パス?アクセス権?)メッセージで常に問題が発生します。

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

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

アップデート

最新のライブラリに更新してボックス全体を再起動した後、私が行っていたapacheだけでなく、すべてが再び機能しているようです!!!

4

3 に答える 3

283

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

また見てくださいCURLOPT_SSL_VERIFYHOST:

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

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
于 2013-03-06T01:10:35.090 に答える
2

CentOS7 マシンでも同じ問題が発生しました。を無効にVERIFYHOST VERIFYPEERしても問題は解決しませんでした。cURL エラーは発生しなくなりましたが、応答は依然として無効でした。cURLwgetが行っていたのと同じリンクに対しても、証明書エラーが発生しました。

-> 私たちの解決策も VPS を再起動することでした。これで解決し、リクエストを再度完了することができました。

私たちにとって、これはメモリ破損の問題のようでした。VPS を再起動すると、ライブラリがメモリに再度読み込まれ、動作するようになりました。したがって、上記の解決策が@clover機能しない場合は、マシンを再起動してみてください。

于 2016-06-08T10:54:00.370 に答える