如何更新RedHat上的cURL CA包?

我遇到了与我的cURL版本捆绑在一起的CA bundle已经过期的问题。

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证书附加到该文件,也可以replace整个捆绑软件。

    你也想知道在哪里获得证书? 我(和其他人)推荐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

    在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/即可运行该工具。 完工。 这是安全的,你不需要做任何备份。 完整的手册页可以在这里find: https : //www.mankier.com/8/update-ca-trust

    RHEL提供Mozilla CA证书作为ca-certificates包的一部分(如果尚未安装,请用yum安装)。 要告诉cURL使用这些,请使用--cacert参数。

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

    可能取决于哪个版本的Redhat。 你可以通过下面的步骤find哪个包实际更新文件:

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

    我的结果是显示openssl-0.9.8e-12.el5需要更新。

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

    自从Dan Pritts发表评论以来,红帽一直在更新经常支持的RHEL版本的证书包; 你可以在package changelog中很容易的看到这个。 RHEL 6的证书在2013年两次更新,2014年两次。

    所有RHEL和相关/克隆/派生发行版都在/etc/pki/tls/certs/ca-bundle.crt提供了一个捆绑文件,而在/etc/pki/tls/cert.pem (在旧的发行版cert.pem上)提供了相同的文件cert.pemca-bundle.crt一个符号链接;在较新的发行版中,两者都是由update-ca-trust输出的文件的符号链接)。

    在RHEL 6及更新版本中,该捆绑软件是“ca-certificates”软件包的一部分。 在RHEL 5及更早版本中,它是“openssl”软件包的一部分。

    在RHEL 6中更新了https://rhn.redhat.com/errata/RHEA-2013-1596.html和任何更新的RHEL,“共享系统证书”系统可用(您必须运行update-ca-trust enable启用它),最好的方法是由lzap给出的。 这个系统的一个好处是它适用于基于NSS和GnuTLS的应用程序以及基于OpenSSL的应用程序。 请注意,您也可以通过将证书放置在/etc/pki/ca-trust/source/blacklist/目录中来不信任证书。

    在RHEL 5及更高版本(如果不希望使用新系统,则为RHEL 6),可以通过将其PEM格式的证书文件的扩展名为.pem放置在/ etc / pki / tls / certs中并运行c_rehash (可能还需要yum install /usr/bin/c_rehash )。 这只适用于使用OpenSSL默认信任库的软件。 这比编辑或replace软件包文件要好,因为它允许您继续接收软件包文件的官方更新。

    直接使用软件包文件位置之一(而不是要求OpenSSL使用系统默认信任库)的软件不会考虑更改; 如果你有这样的软件,你就不能编辑软件包文件(或者改进软件)。 根本不使用OpenSSL的软件将不尊重添加的证书。

    我只需要在一个旧的RHEL5盒子上做这个。 我碰到了catch 22 … curl会拒绝https下载,因为机器上的证书太旧了,无法validationcurl.haxx.se证书。

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

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