我使用curl收到以下错误:
curl: (77) error setting certificate verify locations: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none
如何设置此证书验证位置?谢谢。
答案 0 :(得分:142)
我还安装了最新版本的ca-certificates,但仍然收到错误:
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
问题是卷曲期望证书位于路径/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后面的路径:"在您的错误消息中。
答案 1 :(得分:78)
将其放入.bashrc
# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
(见Robert的评论)
答案 2 :(得分:64)
此错误与缺少包:ca-certificates
有关。安装它。
在Ubuntu Linux(以及类似的发行版)中:
# apt-get install ca-certificates
通过Apt-Cyg
在CygWin中# apt-cyg install ca-certificates
在Arch Linux(Raspberry Pi)中
# pacman -S ca-certificates
文件说明:
此软件包包含CA证书的PEM文件,以允许基于SSL的应用程序检查SSL连接的真实性。
答案 3 :(得分:28)
使用以下内容创建文件~/.curlrc
cacert=/etc/ssl/certs/ca-certificates.crt
答案 4 :(得分:18)
解决错误的最快方法是在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证书。
答案 5 :(得分:12)
@roens是正确的。这会影响所有 Anaconda 用户,并出现以下错误
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
解决方法是使用默认的系统卷曲和避免弄乱前面的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卷曲Github问题 https://github.com/conda/conda-recipes/issues/352
答案 6 :(得分:10)
来自$ 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.
答案 7 :(得分:6)
解决此问题的另一种方法是禁用证书验证:
echo insecure >> ~/.curlrc
答案 8 :(得分:5)
这对我有用
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
答案 9 :(得分:5)
对于在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.co.uk/curl/
上预编译的Windows版本卷曲7.47.1的列表。答案 10 :(得分:4)
curl默认执行SSL
证书验证,使用&#34;捆绑&#34;
Certificate Authority (CA)
个公钥(CA证书)。默认
bundle名为curl-ca-bundle.crt;您可以指定备用文件
使用--cacert选项。
如果此HTTPS
服务器使用由CA表示的CA签名的证书
捆绑,证书验证可能由于a而失败
证书问题(可能已过期,或名称可能已过期)
与网址中的域名不匹配。)
如果您想关闭curl对证书的验证,请使用
-k(或--insecure
)选项。
例如
curl --insecure http://........
答案 11 :(得分:4)
您的curl似乎指向具有CA证书或类似信息的不存在的文件。
有关具有curl的CA证书的主要参考,请参阅:https://curl.haxx.se/docs/sslcerts.html
答案 12 :(得分:2)
我遇到了完全相同的问题。事实证明,我的Prototype
文件格式不正确。最后一个条目显示如下:
/etc/ssl/certs/ca-certificates.crt
在-----BEGIN CERTIFICATE-----
MIIEDTCCAvWgAwIBAgIJAN..lots of certificate text....AwIBAgIJAN-----END CERTIFICATE-----
之前添加换行符后,curl能够处理证书文件。
由于我的-----END CERTIFICATE-----
命令没有给我任何警告,所以非常讨厌。
这可能是也可能不是curl的版本特定问题,所以这是我的版本,只是为了完整性:
update-ca-certificates
答案 13 :(得分:2)
对于它的价值,检查which curl
正在运行也很重要。
我维护的共享计算机上的用户遇到此错误。但事实证明是因为他们安装了Anaconda(http://continuum.io)。这样做会将Anaconda的二进制路径放在标准$PATH
之前,它带有自己的curl
二进制文件,无法找到在此Ubuntu计算机上安装 的默认证书。
答案 14 :(得分:1)
在git bash中运行以下命令,对我来说很好用
{{1}}
答案 15 :(得分:1)
如果您在macOS上使用自制软件,或者在Linux中使用linuxbrew,请尝试按照this page中的以下步骤重新安装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
您可能需要启动一个新的Shell会话以使用来验证结果
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
参考文献:
答案 16 :(得分:1)
只需创建系统中缺少的文件夹即可。
/ 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
固定。
答案 17 :(得分:0)
错误是由于PKI目录中的SSL链证书文件损坏或丢失。 您需要确保文件ca-bundle,遵循以下步骤: 在您的控制台/终端中:
function Foo2() { }
Foo2.prototype.test = function() {
console.log('i\'m working!');
};
module.exports = Foo2;
输入此网站:https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates,获取您的ca证书,以获取结果。 复制下载的网址并粘贴到网址: wget your_url_donwload_ca-ceritificated.rpm 现在,安装你的rpm:
mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates
现在重新启动您的服务: 我的例子这个命令:
rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv
答案 18 :(得分:0)
这对我来说很明确:
curl --remote-name --time-cond cacert.pem \
https://curl.haxx.se/ca/cacert.pem
答案 19 :(得分:0)
我发现此修复程序是一种简单且安全的修复程序。
它仅涉及更改php.ini
文件中两个值的路径。
请按照以下说明进行操作:
https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificate
答案 20 :(得分:0)
下面介绍解决问题的步骤。
1.找出定义网址上存在的文件。
2.如果没有,则从URL下载文件。 https://curl.haxx.se/ca/cacert.pem
3.将文件复制并粘贴到php.ini文件的定义路径中。
4.重新启动apache服务。
答案 21 :(得分:0)
我遇到了这个问题,结果证明我的CURL版本无法解析DER编码的证书(也没有注意--cert-type选项)。当我将证书转换为PEM格式时,它起作用了。
答案 22 :(得分:0)
我遇到了同样的问题:我正在构建一个基于高山的docker映像,并且当我想卷曲到组织的网站时,会出现此错误。要解决它,我必须获得我公司的CA证书,然后,必须将其添加到我图像的CA证书中。
使用OpenSSL获取与网站相关的证书:
mvn compile
这将输出类似:
openssl s_client -showcerts -servername my.company.website.org -connect my.company.website.org:443
获取最后一个证书(CONNECTED(00000005)
depth=2 CN = UbisoftRootCA
verify error:num=19:self signed certificate in certificate chain
...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
...
和
之间的内容
-----BEGIN CERTIFICATE-----
标记)并将其保存到文件中(例如,mycompanyRootCA.crt)
然后,当您从alpine构建您的docker映像时,请执行以下操作:
-----END CERTIFICATE-----
您的图像现在将正常工作! \ o /
答案 23 :(得分:0)
如果仍有问题,请尝试此操作,它对我有用
删除您的/etc/ssl/certs/
目录中的文件
然后重新安装ca证书sudo apt install ca-certificates --reinstall
当我尝试安装Linuxbrew时是这样做的
答案 24 :(得分:0)
答案 25 :(得分:0)
我也有这个问题。我的问题是这个文件:
/usr/ssl/certs/ca-bundle.crt
默认情况下只是一个空文件。因此,即使存在,您仍然可以 错误,因为它不包含任何证书。您可以这样生成它们:
p11-kit extract --overwrite --format pem-bundle /usr/ssl/certs/ca-bundle.crt
https://github.com/msys2/MSYS2-packages/blob/master/ca-certificates/ca-certificates.install
答案 26 :(得分:0)
我使用 MobaXterm,实习生使用 Cygwin,因此即使在使用 ca-certificates
安装 apt-cyg install ca-certificates
后问题也没有解决。
我仍然收到以下错误:
curl: (77) error setting certificate verify locations: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none
然后我尝试列出文件 /etc/ssl/certs/ca-certificates.crt
但我找不到它。但是,我可以找到带有所有标准 CA 证书的 /usr/ssl/certs/ca-bundle.crt
,因此我将文件 /usr/ssl/certs/ca-bundle.crt
复制为 /etc/ssl/certs/ca-certificates.crt
并解决了问题。
答案 27 :(得分:-1)
我遇到了同样的问题。
这是我的错误
@SpringBootApplication
对我来说很好用
我将git安装目录名重命名为 git_repo “。