当前位置: 首页>>技术教程>>正文


Ubuntu 10.04/CURL:如何修复/更新CA Bundle?

,

问题描述

我最近将服务器以及所有软件从8.04升级到了10.04。

根据我在网上找到的信息,似乎新版本的CURL不包含CA捆绑包,因此无法验证您所连接的服务器的证书是否由有效的授权机构签名。

实际错误是:


CURL error: SSL certificate problem, verify that the CA cert is OK.
Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:
certificate verify failed 

我发现的一些地方建议您在调用CURL时通过设置选项来手动指定CA文件或完全禁用该检查,但是我宁愿全局解决此问题,而不必修改每个应用程序的CURL调用。

有没有办法解决CURL的CA问题server-wide,以便所有现有的应用程序代码都可以按原样工作而无需进行修改?

最佳回答

我遇到了同样的麻烦,经过一番摸索后发现,您可以直接从curl开发者网站下载CA-certs软件包,以准备在ubuntu上使用curl。

cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem

现在,curl使用了最多的up-to-date捆绑包,您一切顺利。

次佳回答

Ubuntu 12.04从命令行运行curl以获得github中的aws 命令行工具时也遇到类似的问题。我发现是否按如下方式运行命令行:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt

它会工作。但是尝试设置CURL_CA_BUNDLE环境变量,以便可以避免”cacert”参数不起作用。最终更新ca-certificates似乎可以解决问题:

sudo update-ca-certificates

附带说明一下,有一点我从curl.haxx.se更新了ca-certs,该问题无法解决,但可能已经解决了。 (sudo wget http://curl.haxx.se/ca/cacert.pem/etc/ssl/certs运行)。

第三种回答

通常,没有唯一实现且针对OpenSSL编译的软件将引用通常位于/usr/share/ssl/certs中的system-wide ca-bundle.crt。

在Ubuntu中,位置可能有所不同,但OpenSSL软件包应包含ca-bundle文件。

CURL具有多种选项来指定其验证证书的方式。

  • ca-bundle文件位置的CURL_CA_BUNDLE环境变量。

  • --capath允许您指定CA证书所在的目录。 (覆盖CURL_CA_BUNDLE)

  • --cacert允许您指定CA证书文件。

在我的CentOS服务器上,我可以运行以下命令来识别CURL使用的ca-bundle路径:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10686.html,未经允许,请勿转载。