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

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

我最近将我们的服务器从 8.04 升级到了 10.04,同时升级了所有软件。

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

实际错误是:

CURL 错误:SSL 证书问题,请验证 CA 证书是否正确。
详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:
证书验证失败

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

有没有办法在整个服务器范围内修复 CURL 的 CA 问题,以便所有现有的应用程序代码都能按原样工作而无需修改?

答案1

我一直遇到同样的麻烦,经过一番寻找后发现,可以直接从 curl dev 站点下载适用于 ubuntu 上的 curl 的 CA 证书包。

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

现在 curl 使用最新的捆绑包,您就可以开始了。

答案2

有类似的问题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)。

答案3

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

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

CURL 有多种选项来指定如何验证证书。

  • CURL_CA_BUNDLEca-bundle 文件位置的环境变量。
  • --capath允许您指定 CA 证书所在的目录。(覆盖CURL_CA_BUNDLE
  • --cacert允许您指定 CA 证书文件。

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

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

答案4

对于 ubuntu 10.04 lucid

http://curl.haxx.se/ca/cacert.pem在 /usr/share/ca-certificates/ 添加一行

cacert.pem

进入 /etc/ca-certificates.conf

sudo 更新 ca 证书

下载最新的 openssl 和 curl (使用 --with-openssl 配置) make 并安装

它解决了我的问题

相关内容