我遇到了与我的 cURL 版本捆绑在一起的 CA 包已过时的问题。
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
通读文档对我没有帮助,因为我不明白我需要做什么或如何做。我正在运行 RedHat,需要更新 CA 包。我需要做什么才能在 RedHat 上更新我的 CA 包?
对于 RHEL 6 或更高版本,您应该使用update-ca-trust,如 lzap 在下面的回答中所述。
--- 对于旧版本的 Fedora、CentOS、Redhat:
Curl 使用系统默认的 CA 包存储在 /etc/pki/tls/certs/ca-bundle.crt 中。在更改它之前,请复制该文件,以便在需要时可以恢复系统默认值。您可以简单地将新的 CA 证书附加到该文件,或者您可以替换整个包。
您是否也想知道从哪里获得证书?我(和其他人)推荐 curl.se/ca 。在一行中:
Fedora Core 2 位置是
/usr/share/ssl/certs/ca-bundle.crt
.在 RHEL 6+ 系统上执行此操作的推荐方法是使用update-ca-trust工具,该工具现已默认安装。
因此,您只需将您的 crt 文件拖放到
/etc/pki/ca-trust/source/anchors/
并运行该工具。完成工作。这是安全的,您不需要做任何备份。完整的手册页可以在这里找到:https ://www.mankier.com/8/update-ca-trust可能取决于哪个版本的 Redhat。您可以通过执行以下操作找到实际更新文件的包:
我的结果显示openssl-0.9.8e-12.el5需要更新。
如果您的发行版中没有更新的证书,您必须按照 Nada 的回答手动更新。
RHEL 提供 Mozilla CA 证书作为
ca-certificates
软件包的一部分(yum
如果尚未安装,请安装它)。要告诉 cURL 使用这些,请--cacert
像这样使用参数。自 Dan Pritts 发表评论以来,Red Hat 一直在更频繁地更新受支持的 RHEL 版本的证书包;您可以在包更新日志中很容易地看到这一点。RHEL 6 的证书在 2013 年更新了两次,在 2014 年更新了两次。
所有 RHEL 和相关/克隆/派生的发行版都在 提供了一个捆绑文件,
/etc/pki/tls/certs/ca-bundle.crt
而同一个文件在/etc/pki/tls/cert.pem
cert.pem
ca-bundle.crt
update-ca-trust
在 RHEL 6 及更新版本中,该捆绑包是“ca-certificates”包的一部分。在 RHEL 5 及更早版本中,它是“openssl”包的一部分。
在带有更新https://rhn.redhat.com/errata/RHEA-2013-1596.html和任何更新的 RHEL 的 RHEL 6 中,“共享系统证书”系统可用(您必须运行
update-ca-trust enable
才能启用它)并且最好方法是lzap给的。该系统的一个好处是它适用于基于 NSS 和 GnuTLS 的应用程序以及基于 OpenSSL 的应用程序。请注意,您也可以通过将证书放在目录中来不信任它/etc/pki/ca-trust/source/blacklist/
。在 RHEL 5 及更早版本(以及 RHEL 6,如果您不想使用新系统)中,您可以通过将扩展名为
.pem
/etc/pki/tls/certs 的 PEM 格式证书文件放在 /etc/pki/tls/certs 中并运行c_rehash
(可能还需要yum install /usr/bin/c_rehash
). 这仅适用于使用 OpenSSL 默认信任库的软件。这比编辑或替换捆绑文件要好,因为它允许您继续接收捆绑文件的官方更新。直接使用捆绑文件位置之一的软件(而不是要求 OpenSSL 使用系统默认的信任库)将不遵守更改;如果你有这样的软件,你就无法编辑捆绑文件(或改进软件)。根本不使用 OpenSSL 的软件将不会遵守添加的证书。
我只需要在一个旧的 RHEL5 机器上做这个。我遇到了问题 22...curl 会拒绝 https 下载,因为机器上的证书太旧而无法验证 curl.haxx.se 证书。
我使用了 curl 的 --insecure 选项来强制 https 下载。(是的,我知道......这是“不安全的”。)
对于RHEL 6,我能够通过更新和重新安装来自 Red Hat 的最新 CA 证书包来解决这个问题:
(就我而言,这足以让更新的“Let's Encrypt Authority X3”签名证书受到信任。)