11

cURL および PHP の内部コマンドで使用するためにルート証明書を最新の状態に保ちたいのですがcurl、現在、適切な安全な接続に必要な現在のファイルをダウンロードして最新の状態に保つためのパラメーターはありません。

curlまた、(リモート接続を検証するための PEM エンコードされた証明書チェーン)という名前のファイルを必要とする安全な接続のために PHPで使用する例はcacert.pem次のとおりです。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
if (!($data = curl_exec($ch))) {
    echo "No data received";
} else {
    echo strlen($data) + " total byte(s)";
}
curl_close($ch);

ほとんどの人は単純CURLOPT_SSL_VERIFYPEERに false に設定しているため、問題を無視していますが、これは悪いことです。このファイルが最新でない場合、安全なサーバーに接続する唯一の方法は証明書のチェックを無効にすることであり、ピア検証を無効にすることの影響についてさらに警告することを証明機関が示している場所をここで確認できます。

私が要求しているのは、 のローカル コピーを維持する正当な方法です。これにより、PHP をcacert.pem使用して他のサーバーと通信するときに、引き続き安全に通信を行うことができます。curl

これは、外部リソースやオフサイト リンクなどの要求ではありませんが、問題の性質上、証明書チェーンが失効するため継続的な更新が必要になるため、これが唯一の解決方法である可能性があります。今日まで、curl 自体、php、または php の curl ライブラリの配布の一部としてこのファイルを取得し、維持し続ける方法はありません。これが単純な更新コマンドのようなものではないことは落胆さcurl --update-root-caせられますが、いかなる形でも存在しません。

4

2 に答える 2

22

最初にこの記事を書いて以来 (そしてこの書き直し)、この場所の著者によって管理されているサイトで提供されているこのファイルを維持するための唯一の正当なソースへの直接のリンクを含めることで、私自身の問題を解決することができましcurl

さらに技術が進歩するにつれて、この質問は更新されcurl、PHP で使用して TLS v1.2 接続を強制する方法を示すようになりました (特定のトランザクション プロバイダーが要求または推奨するものであり、これを行う方法に関する情報を提供しない場合があります)。

認証局に関しては、次のような主要なルート認証局がいくつかあります。

  • シマンテック
  • RapidSSL
  • トーテ
  • ジオトラスト
  • コモド

同様に、次のような性質による他の権限

  • マイクロソフト
  • モジラ
  • グーグル

これは、独自の cacert.pem を維持しようとしている人にとってフレームになる可能性があります。適切な信頼メカニズムを維持するために、それぞれの crl から失効リスト (違反または期限切れの証明書) をダウンロードする必要があることに注意してください。ただし、ルート証明書チェーンをダウンロードしてそれらを使用するだけで済むはずです。 cacert.pem としてローカルの信頼できるファイルとして。

于 2014-04-12T15:45:45.453 に答える
13

cacert.pemによって使用されcurlます。どの証明書が信頼できるかという最終的な権限はありませんが、Web ブラウザーで使用されるリストは良い情報源です。これらのリストは、CA の変更およびセキュリティ プラクティスの変更により、常に更新されています。

の作成者は、Firefox からcurlを抽出できるツールを維持しておりcacert.pem、彼らのサイトにかなり最新の出力を投稿しています。

  • の作者によって生成されたcacert.pemcurl
  • caextract : 最もセキュリティを意識している場合は、ツールをダウンロードし、ソース コードを調べて、自分の Firefox に対して実行します。
于 2014-10-16T00:57:40.450 に答える