我得到以下错误使用卷曲:

curl: (77) error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none

如何设置证书验证位置?


当前回答

无论如何,检查正在运行哪个curl也很重要。

我维护的共享机器上的一个用户得到了这个错误。但原因是他们安装了Anaconda (http://continuum.io)。这样做会把Anaconda的二进制路径放在标准的$ path之前,并且它自带curl二进制文件,它很难找到安装在这台Ubuntu机器上的默认certs。

其他回答

似乎您的卷曲指向一个不存在的文件与CA证书或类似。

有关CA certs与curl的主要参考,请参见:https://curl.haxx.se/docs/sslcerts.html

这对我很有效

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

如果没有“tls/certs”文件夹,请创建一个“tls/certs”文件夹,并使用chmod 777 -R folderNAME修改权限

curl默认使用“bundle”执行SSL证书验证 的证书颁发机构公钥(CA certs)。默认的 Bundle名为curl-ca-bundle.crt;您可以指定一个备用文件 使用——cacert选项。

如果此HTTPS服务器使用由中表示的CA签名的证书 ,证书验证可能失败,由于 证书的问题(它可能过期了,或者名称可能过期了 不匹配URL中的域名)。

如果您想关闭curl对证书的验证,请使用 -k(或——insecure)选项。

例如

curl --insecure http://........

从$ 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.

只需创建文件夹,这在您的系统中是缺失的..

/ etc / pki / tls证书

并使用以下命令创建文件,

Sudo apt-get install ca-certificates

然后复制并粘贴证书到目标文件夹,这是显示在您的错误..我的是“with message”错误设置证书验证位置:CAfile: /etc/pki/tls/certs/ca-bundle.请确保您将文件粘贴到错误中提到的确切位置。使用以下命令复制粘贴..

电脑:sudo cp /etc/ssl/证书/呆滞 / etc / pki / tls证书/ ca-bundle crt。

固定的。