如何在RedHat上更新cURL CA捆绑包?


38

我遇到了与我的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捆绑软件?

Answers:


50

对于RHEL 6或更高版本,您应该使用update-ca-trust,如lzap在下面的答案中所述。

---对于旧版本的Fedora,CentOS,Redhat:

Curl使用的系统默认CA捆绑包存储在/etc/pki/tls/certs/ca-bundle.crt中。进行更改之前,请复制该文件,以便在需要时可以将系统还原为默认设置。您可以简单地将新的CA证书附加到该文件,也可以替换整个捆绑包。

您是否还在想从哪里获得证书?我(和其他人)推荐curl.haxx.se/ca。一行:

curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Fedora Core 2的位置是/usr/share/ssl/certs/ca-bundle.crt。


很好,但是如何确定在下次更新ca-bundle.crt时添加的证书不会丢失?我可以在新的地方放一个新的地方吗?
— Andrew Schulman 2014年

从2006年开始,openssl升级不应替换ca-bundle.crt文件(请参阅rhn.redhat.com/errata/RHSA-2006-0661.html)。但是,如果您安装了另一个软件包,例如@mgorven建议的ca-certificates软件包,那么我希望它将被手动覆盖。
— 娜达2014年

36

在RHEL 6+系统上,建议这样做的方法是使用update-ca-trust工具,该工具现已默认安装。

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information

因此,您只需要将crt文件拖放到/etc/pki/ca-trust/source/anchors/并运行该工具。完成工作。这是安全的,您不需要执行任何备份。完整的手册页可以在这里找到:https : //www.mankier.com/8/update-ca-trust


嗨,对您有用吗?我只是尝试按照access.redhat.com/solutions/1549003中的方案进行操作,它对我不起作用。
— 比(Kirby)

6

RHEL将Mozilla CA证书作为ca-certificates软件包的一部分提供(yum如果尚未安装,请安装此证书)。要告诉cURL使用它们,请使用--cacert类似的参数。

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/

我试过yum install ca-certificates了No package ca-certificates available
— 安德鲁(Andrew)

1
RHEL6有此软件包。我猜您正在使用旧版本。不幸的是,该列表自2010年以来就没有改变过,感谢您使我们保持最新状态。
— Dan Pritts 2013年

我在AWS EC2上使用RHEL7,我只是将软件包升级到ca-certificates.noarch 0:2014.1.98-70.0.el7_0-不幸的是,它不能解决我的问题,但只是以为我会添加此信息。
— DuffJ 2015年

6

可能取决于Redhat的版本。您可以通过执行以下操作找到哪个软件包实际更新了文件:

rpm -qf /etc/pki/tls/certs/ca-bundle.crt

我的结果表明,openssl-0.9.8e-12.el5需要更新。

如果您的发行版中没有更新的证书,则必须按照Nada的答案手动更新。


6

自从Dan Pritts发表评论以来,Red Hat更加频繁地更新了受支持的RHEL版本的证书包。您可以在软件包changelog中很容易地看到这一点。RHEL 6的证书在2013年和2014年两次更新。

所有RHEL和相关的/ clone /派生发行版在处都提供了捆绑包文件,在处提供了/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的PEM格式证书文件放在/ etc / pki / tls / certs中并运行来信任其他CA c_rehash(可能还需要yum install /usr/bin/c_rehash)。这仅适用于使用OpenSSL的默认信任存储的软件。这比编辑或替换捆绑文件更好,因为它使您可以继续接收捆绑文件的正式更新。

直接使用捆绑软件文件位置之一的软件(而不是要求OpenSSL使用系统默认的信任库)将不遵守该更改;如果您有这样的软件,则您将无法编辑捆绑文件(或改进软件)。完全不使用OpenSSL的软件将不遵守添加的证书。


3

我只需要在旧的RHEL5机器上执行此操作即可。我碰到了22 ... curl会拒绝https下载,因为计算机上的证书太旧,无法验证curl.haxx.se证书。

我使用curl的--insecure选项来强制https下载。(是的,我知道...这是“不安全的”。)

卷曲https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt


1

对于RHEL 6,我能够通过更新并重新安装Red Hat的最新CA cert软件包来解决此问题:

sudo yum update ca-certificates
sudo yum reinstall ca-certificates

(就我而言,这足以使新的“ Let's Encrypt Authority X3”签名证书受信任。)


该命令对我有效(CentOS 6),但没有解决我的问题(使用“ DigiCert SHA2 Secure Server CA”颁发的证书)
— rinogo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.