Curlを使用して次のエラーが表示されます。
curl:(77)証明書検証場所の設定エラー: CAfile:/etc/ssl/certs/ca-certificates.crt CApath:none
この証明書検証場所を設定するにはどうすればよいですか?ありがとう。
このエラーは、パッケージの欠落に関連しています:ca-certificates
。それをインストールします。
Ubuntu Linux(および同様のディストリビューション):
# apt-get install ca-certificates
CygWinで Apt-Cyg
# apt-cyg install ca-certificates
Arch Linux(Raspberry Pi)で
# pacman -S ca-certificates
ドキュメントは伝えます:
このパッケージには、SSLベースのアプリケーションがSSL接続の信頼性を確認できるようにするCA証明書のPEMファイルが含まれています。
また、CA証明書の最新バージョンをインストールしましたが、まだエラーが発生していました。
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
問題は、curlは証明書がパス/etc/pki/tls/certs/ca-bundle.crt
にあることを期待していましたが、パス/etc/ssl/certs/ca-certificates.crt
にあるために見つからなかったことです。
実行して証明書を予想される宛先にコピーする
Sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
私のために働いた。実行して存在しない場合は、ターゲット宛先のフォルダーを作成する必要があります
Sudo mkdir -p /etc/pki/tls/certs
必要に応じて、上記のコマンドを変更して、宛先ファイル名をcurlが予期するパスに一致させます。つまり、エラーメッセージで/etc/pki/tls/certs/ca-bundle.crt
を「CAfile:」に続くパスに置き換えます。
これを.bashrc
に入れてください
# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
(ロバートからのコメントを参照)
次の内容のファイル~/.curlrc
を作成します
cacert=/etc/ssl/certs/ca-certificates.crt
エラーを回避する最も簡単な方法は、curlリクエストのどこかに-kオプションを追加することです。そのオプションは、「証明書なしでSSLサイトへの接続を許可します。」 (curl --helpから)
これは、信頼できるCAによって署名されていない証明書を提示しているため、自分が考えているエンドポイントと通信していないことを意味する場合があることに注意してください。
例えば:
$ curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg
私に次のエラー応答を与えました:
curl: (77) error setting certificate verify locations:
CAfile: /usr/ssl/certs/ca-bundle.crt
CApath: none
-kに追加しました:
curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg -k
エラーメッセージはありません。おまけとして、apt-cygをインストールしました。そしてCA証明書。
@roensは正しいです。これはすべてのAnacondaユーザーに影響し、以下のエラーが発生しますcurl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
回避策は、デフォルトのシステムcurlとavoidを使用して、先頭に追加されたAnaconda PATH
変数をいじることです。あなたはどちらか
Anaconda curlバイナリの名前を変更します:)mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
またはAnaconda curlを削除conda remove curl
$ which curl /usr/bin/curl
[0]Anaconda Ubuntu curl Github issuehttps://github.com/conda/conda-recipes/issues/352
$ man curl
から:
--cert-type <type>
(SSL) Tells curl what certificate type the provided certificate
is in. PEM, DER and ENG are recognized types. If not specified,
PEM is assumed.
If this option is used several times, the last one will be used.
--cacert <CA certificate>
(SSL) Tells curl to use the specified certificate file to verify
the peer. The file may contain multiple CA certificates. The
certificate(s) must be in PEM format. Normally curl is built to
use a default file for this, so this option is typically used to
alter that default file.
この問題を修正する別の方法は、証明書の検証を無効にすることです。
echo insecure >> ~/.curlrc
これは私のために働いた
Sudo apt-get install ca-certificates
次に、証明書フォルダに移動します
Sudo cd /etc/ssl/certs
次に、ca-certificates.crtファイルを/etc/pki/tls/certs
にコピーします
Sudo cp ca-certificates.crt /etc/pki/tls/certs
WindowsのXAMPPで実行されているPHPコードの場合、php.iniを編集して以下を含める必要があることがわかりました
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt
そして、ファイルにコピーします https://curl.haxx.se/ca/cacert.pem そして、名前をcurl-ca-bundle.crtに変更し、\ xamppパスの下に配置します(できませんでしたcurl.capathを機能させる)。また、cURLサイトのCAbundleは、接続しているリモートサイトには不十分であることがわかったため、 http:// winamppluginsでcurl 7.47.1のプリコンパイル済みWindowsバージョンと共にリストされているものを使用しました.co.uk/curl /
カールがCA証明書などの存在しないファイルを指しているようです。
Curlを使用したCA証明書の主なリファレンスについては、 https://curl.haxx.se/docs/sslcerts.html を参照してください。
curlは、Certificate Authority (CA)
公開鍵(CA証明書)の「バンドル」を使用して、デフォルトでSSL
証明書の検証を実行します。デフォルトのバンドルはcurl-ca-bundle.crtという名前です。 --cacertオプションを使用して代替ファイルを指定できます。
このHTTPS
サーバーがバンドルで表されるCAによって署名された証明書を使用する場合、証明書の問題が原因で証明書の検証が失敗した可能性があります(有効期限が切れているか、名前がURLのドメイン名と一致しない可能性があります)。
Curlによる証明書の検証を無効にする場合は、-k(または--insecure
)オプションを使用します。
例えば
curl --insecure http://........
システムにないフォルダを作成するだけです。
/ etc/pki/tls/certs /
次のコマンドを使用してファイルを作成します。
Sudo apt-get install ca-certificates
次に、証明書をコピーして、エラーに表示されている宛先フォルダーに貼り付けます。私のものは「with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in
」で、エラーに記載されている正確な場所にファイルを貼り付けてください。次のコマンドを使用して、貼り付けをコピーします。
Sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
一定。
価値があるものとして、which curl
が実行されていることを確認することも重要です。
私が管理している共有マシンのユーザーがこのエラーを受け取っていました。しかし、原因はAnacondaをインストールしたためであることが判明しました( http://continuum.io )。そうすると、標準の$PATH
の前にAnacondaのバイナリパスが置かれ、独自のcurl
バイナリが付属します。このバイナリには、このUbuntuマシンにインストールされたwereのデフォルト証明書が見つかりません。
私はまったく同じ問題を抱えていました。結局のところ、私の/etc/ssl/certs/ca-certificates.crt
ファイルは不正な形式でした。最後のエントリは次のようなものを示しました。
-----BEGIN CERTIFICATE-----
MIIEDTCCAvWgAwIBAgIJAN..lots of certificate text....AwIBAgIJAN-----END CERTIFICATE-----
-----END CERTIFICATE-----
の前に改行を追加した後、curlは証明書ファイルを処理できました。
update-ca-certificates
コマンドは警告を出さなかったので、これを見つけるのは非常に面倒でした。
これは、curlのバージョン固有の問題である場合とそうでない場合があるため、完全を期すために、ここに私のバージョンを示します。
curl --version
# curl 7.51.0 (x86_64-Alpine-linux-musl) libcurl/7.51.0 OpenSSL/1.0.2j zlib/1.2.8 libssh2/1.7.0
# Protocols: dict file ftp ftps Gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
# Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
MacOSでhomebrewを使用している場合、またはlinuxでlinuxbrewを使用している場合は、 このページ から次の手順でopenssl
およびcurl
を再インストールしてください。
このエラーメッセージは、curlがopensslを使用して安全な接続を確立できないことを示しています。 opensslを再インストールすると問題が解決するはずです。 curlとgitの両方で安全でない接続を一時的に使用して必要なファイルをダウンロードするには、次を実行します。
echo insecure >> ~/.curlrc
git config --global http.sslVerify false
次に、opensslおよびcurlをインストールまたは再インストールします。
HOMEBREW_CURLRC=1 brew reinstall openssl curl
最後に、セキュリティの変更を取り消して、curlとgitが安全な接続を再び使用するようにします。
sed -i '/^insecure$/d' ~/.curlrc
git config --global http.sslVerify true
結果を確認するには、新しいシェルセッションを開始する必要がある場合があります
curl -v https://github.com # or any other https urls.
出力に次の出力が表示される場合は、問題を解決する必要があります!
* successfully set certificate verify locations:
* CAfile: /usr/local/etc/openssl/cert.pem
CApath: /usr/local/etc/openssl/certs
参照:
私のためにうまくいくgit bashで次のコマンドを実行します
git config --global http.sslverify "false"
これは私のために修正されました:
curl --remote-name --time-cond cacert.pem \
https://curl.haxx.se/ca/cacert.pem
この問題が発生し、私のバージョンのCURLはDERエンコードされた証明書を解析できませんでした(そして--cert-typeオプションにも注意を払っていませんでした)。証明書をPEM形式に変換すると、機能しました。
この修正は簡単で安全な修正であることがわかりました。 php.ini
ファイル内の2つの値のパスを変更するだけです。こちらの手順に従ってください: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificate
以下は、問題を修正する手順を説明しています。
1。ファイルが定義URLに存在することを確認します。
2。そうでない場合は、URLからファイルをダウンロードします。 https://curl.haxx.se/ca/cacert.pem
3。 php.iniファイルで定義されたパスにファイルをコピーしてペストします。
4。 Apacheサービスを再起動します。
このエラーは、PKIディレクトリ内のSSLチェーン証明書ファイルが破損または欠落していることが原因です。次の手順に従って、ファイルがcaバンドルであることを確認する必要があります:コンソール/端末で:
mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates
次のサイトにアクセスしてください: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates 、ca証明書を取得します。ダウンロードのURLをコピーしてURLに貼り付けます:wget your_url_donwload_ca-ceritificated.rpm now、install yout rpm:
rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv
今、あなたのサービスを再起動します:私の例このコマンド:
Sudo service2 httpd restart