如何在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-certificatesNo 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.