web-dev-qa-db-ja.com

Ubuntu 10.04 / CURL:CAバンドルを修正/更新するにはどうすればよいですか?

私は最近、サーバーを8.04から10.04にアップグレードし、それに加えてすべてのソフトウェアもアップグレードしました。

オンラインで見つけたところによると、CURLの新しいバージョンにはCAバンドルが含まれていないようで、その結果、接続しているサーバーの証明書が有効な機関によって署名されていることを確認できません。

実際のエラーは次のとおりです。

 CURLエラー:SSL証明書の問題です。CA証明書に問題がないことを確認してください。

私が見つけたいくつかの場所は、CURLを呼び出すときにオプションを設定してCAファイルを手動で指定するか、チェックを完全に無効にすることを提案していますが、各アプリケーションのCURL呼び出しを変更する必要はなく、むしろ問題をグローバルに修正したいです。

CURLのCAの問題をサーバー全体で修正して、既存のすべてのアプリケーションコードを変更せずにそのまま機能させる方法はありますか?

19
Nick

私は同じ問題を抱えており、少し調べてみたところ、curl devサイトから直接、ubuntu上のcurl対応のCA証明書のパッケージをダウンロードできることがわかりました。

cd /etc/ssl/certs
Sudo wget http://curl.haxx.se/ca/cacert.pem

Curlが最新のバンドルを使用するようになったので、準備完了です。

18
Paul Alexander

コマンドラインからbuntu 12.04 curlを実行して同様の問題があり、githubにあったawsコマンドラインツールを取得しました。そのようにコマンドラインを実行したかどうかを確認しました:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt

それはうまくいくでしょう。しかし、「cacert」引数を回避できるようにCURL_CA_BUNDLE環境変数を設定しようとしても機能しません。最終的にCA証明書を更新することで問題が解決したようです。

Sudo update-ca-certificates

補足として、ある時点で、問題を解決しなかったが関連している可能性があるcurl.haxx.seからca-certsを更新しました。 (Sudo wget http://curl.haxx.se/ca/cacert.pem から実行 /etc/ssl/certs)。

9
Bob Morley

通常、固有の実装がなく、OpenSSLに対してコンパイルされたソフトウェアは、/usr/share/ssl/certsにあることが多いシステム全体のca-bundle.crtを参照します。

Ubuntuでは場所が異なる場合がありますが、OpenSSLパッケージにはca-bundleファイルが含まれている必要があります。

CURLには、証明書の検証方法を指定するさまざまなオプションがあります。

  • Caバンドルファイルの場所のCURL_CA_BUNDLE環境変数。
  • --capathでは、CA証明書が配置されているディレクトリを指定できます。 (CURL_CA_BUNDLEをオーバーライドします)
  • --cacertでは、CA証明書ファイルを指定できます。

CentOSサーバーで次のコマンドを実行して、CURLが使用するca-bundleパスを特定できます。

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt
5
Warner