如何在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:
从我从谷歌搜索收集的内容来看,它正在寻找的CAfile位置对于Ubuntu来说是不正确的(并且它在我的计算机上不存在),/ etc / ss / cert / 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)标志。 我希望安全地工作。
经过过去几天的研究和研究,我得到了它的工作,答案最终变得相当简单。
我需要在我的.curlrc
文件中设置capath=/etc/ssl/certs/
。
这使得curl在命令行上运行。 为了进一步让cacert=/etc/ssl/certs/ca-certificates.crt
在R中工作(我第一次遇到问题)我还需要在我的.curlrc
文件中使用cacert=/etc/ssl/certs/ca-certificates.crt
, .curlrc
,否则它继续寻找/etc/pki/tls/certs/ca-bundle.crt
我仍然不知道为什么我看到有关自签名证书的错误。
基于其他一些随机发现,我还从Curl网站下载了一个证书:
sudo wget http://curl.haxx.se/ca/cacert.pem
进入相同的certs
目录。 cafile
指向这个也很有效。 最后我把它放回到ca-certificates.crt
,它仍然有效。
我不明白为什么这样做或者发生了什么,但它已经解决了。
cafile key对我不起作用(curl 7.45.0)但是cacert(来自–cacert选项)确实如此。 我的.curlrc文件:
capath=/etc/ssl/certs/ cacert=/etc/ssl/certs/ca-certificates.crt
我们在Ubuntu 14.04.5中遇到了一个与C ++程序相同的问题。 .curlrc方法没有生效。
这是通过将ca-certificates.crt下载到/etc/ssl/certs/ca-certificates.crt并在/ etc / pki / tls / certs /目录下创建符号链接ca-bundle.crt来解决的。
希望这可以帮助!