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

Nic*_*ick 19 ubuntu curl

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

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

实际错误是:

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

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

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

Pau*_*der 19

我也遇到了同样的问题,经过一番摸索后发现,您可以直接从 curl 开发站点下载准备在 ubuntu 上 curl 的 CA 证书包。

cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem
Run Code Online (Sandbox Code Playgroud)

现在 curl 使用最新的包,你很高兴。


小智 9

Ubuntu 12.04从命令行运行 curl 以获取 github 中的 aws 命令行工具时遇到了类似的问题。我发现如果我这样运行命令行:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt
Run Code Online (Sandbox Code Playgroud)

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

sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

作为旁注,有一次我从 curl.haxx.se 更新了 ca-certs,它没有解决问题,但可能是相关的。(sudo wget http://curl.haxx.se/ca/cacert.pem从 运行/etc/ssl/certs)。

  • 唔。通过 HTTPS 获取包含诸如 _not_ 之类的证书的文件似乎很狡猾。 (2认同)

War*_*ner 5

通常,没有唯一实现并针对 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
Run Code Online (Sandbox Code Playgroud)