Ubuntu 14.04 で Curl を使用して CA 証明書の問題を修正するにはどうすればよいですか?

Ubuntu 14.04 で Curl を使用して CA 証明書の問題を修正するにはどうすればよいですか?

Ubuntu 14.04 を使用しています。curl を使用すると、次のエラーが発生します。

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

Google で調べたところ、探している CAfile の場所は Ubuntu では正しくありません (私のコンピューターには存在しません) が、/etc/ssl/certs/ca-certificates.crt適切な場所です。

解決策のほとんどは、環境変数をCURL_CA_BUNDLE適切な場所に設定したり、ホーム ディレクトリ内のcacert=/etc/ssl/certs/ca-certificates.crt(新しく作成された).curlrcファイルに追加したりすることでした。私は両方試しましたが、どちらも問題を完全に解決できませんでした。curl はこの場所を見つけていますが、まだ機能せず、次のエラーが表示されます。

curl: (60) SSL certificate problem: self signed certificate in certificate chain

また、Ubuntu で curl をアンインストールして再インストールし、$ sudo update-ca-certificates --fresh証明書を更新した CA 証明書を更新してみましたが、それでもエラー 60 は解消されませんでした。

私は CA 証明書についてそれほど詳しくないので、過去に意図的に自己署名証明書を追加したとは思えません。偶然かもしれません。わかりません。

これを修正する方法を知っている人はいますか? すべての証明書を実際に新しく開始する方法はありますか? または、この自己署名証明書がどこにあるかを調べて、それを削除する方法を知っている人はいますか?

PS: -k (別名 --insecure) フラグは使いたくありません。安全に動作させたいのです。

答え1

ここ数日、調査と作業を行った結果、うまく動作するようになりましたが、答えは結局かなり単純なものでした。

capath=/etc/ssl/certs/ファイルに設定する必要がありました.curlrc

これでcurlがコマンドラインで動作するようになりました。さらにcurlをRで動作させるには(最初に問題が発生した場所)、前に試したようにファイルcacert=/etc/ssl/certs/ca-certificates.crtに以下を追加する必要がありました.curlrc。そうしないと、/etc/pki/tls/certs/ca-bundle.crt

自己署名証明書に関するエラーがなぜ表示されたのか、まだわかりません。

他のランダムな発見に基づいて、Curl Web サイトから次の証明書もダウンロードしました。

sudo wget https://curl.se/ca/cacert.pem

同じcertsディレクトリに。cafileこれを指定してもうまくいきました。最後に、元に戻してca-certificates.crtもまだ動作します。

なぜこれが機能したのか、何が起こっているのか正確にはわかりませんが、問題は解決しました。

答え2

カファイルキーは私の環境では機能しません(curl 7.45.0)が、cacert(--cacertオプションから)は機能します。.curlrcファイル:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

答え3

何度か調べた後、私はそれを機能させました、そして答えは結局かなり単純なものでした。

ターミナルctrl++を開き、作業ディレクトリを変更しますaltt

 cd /etc/ssl/certs/

pemファイルをダウンロード証明書フォルダ

 sudo wget https://curl.se/ca/cacert.pem 

ファイルを開く.curlrc

nano ~/.curlrc 

開いているファイルに以下の行を追加します

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

次に、ファイルを保存し、curl コマンドを使用して操作を実行します。

注意ここではnanoエディタを使用しましたが、どのエディタでも使用できます。

答え4

Ubuntu 14.04.5 の C++ プログラムの 1 つで同じ問題が発生しました。この.curlrc方法は機能しませんでした。

ca-certificates.crtこれは、をダウンロードしてディレクトリの下に/etc/ssl/certs/ca-certificates.crtシンボリック リンクを作成することで解決されました。ca-bundle.crt/etc/pki/tls/certs/

お役に立てれば!

関連情報