
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++を開き、作業ディレクトリを変更しますalt。t
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/
お役に立てれば!