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バンドルを更新するにはどうすればよいですか?

回答:


50

RHEL 6以降では、lzapが以下の回答で説明しているように、update-ca-trustを使用する必要があります。

--- Fedora、CentOS、Redhatの古いバージョンの場合:

Curlはシステムデフォルトを使用していますCAバンドルは/etc/pki/tls/certs/ca-bundle.crtに保存されています。変更する前に、必要に応じてシステムのデフォルトを復元できるように、そのファイルのコピーを作成します。そのファイルに新しいCA証明書を単に追加するか、バンドル全体を置き換えることができます。

また、証明書をどこで入手できるのでしょうか?私(およびその他)はcurl.haxx.se/caを推奨しています。1行で:

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の次の更新で失われないことをどのように確認できますか?自動的に含まれる新しい場所を配置できる場所はありますか?
アンドリューシュルマン14

2006年の時点で、opensslのアップグレードはca-bundle.crtファイルを置き換えるべきではありません(rhn.redhat.com/errata/RHSA-2006-0661.htmlを参照)。ただし、@ mgorvenが推奨するca-certificatesパッケージなど、別のパッケージがインストールされている場合は、手動で上書きされると予想されます。
ada 14

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のシナリオに従うことを試みましたが、うまくいきません。
カービー

6

RHELは、ca-certificatesパッケージの一部としてMozilla CA証明書を提供します(yumまだインストールされていない場合は、これをインストールします)。これらを使用するようにcURLに指示するには、その--cacertようなパラメーターを使用します。

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

試してみyum install ca-certificatesNo package ca-certificates available
アンドリュー

1
RHEL6にはこのパッケージがあります。古いバージョンを使用していると思います。残念ながら、リストは2010年以降変更されていません。
ダンプリッツ

AWS EC2でRHEL7を使用しています。パッケージをアップグレードしましたca-certificates.noarch 0:2014.1.98-70.0.el7_0-残念ながら問題は解決しませんでしたが、この情報を追加すると思いました。
-DuffJ

6

おそらくRedhatのバージョンに依存します。実際にファイルを更新するパッケージを見つけるには、次を実行します。

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

私の結果は、openssl-0.9.8e-12.el5を更新する必要があることを示していました。

ディストリビューションに更新された証明書がない場合は、Nadaの回答に従って手動で更新する必要があります。


6

Dan Prittsのコメント以来、Red HatはサポートされているRHELリリースの証明書バンドルをより頻繁に更新しています。これはパッケージの変更ログで簡単に確認できます。RHEL 6の証明書は2013年に2回、2014年に2回更新されました。

すべての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)では、/ etc / pki / tls / certsに拡張子.pem持つ PEM形式の証明書ファイル配置して実行することで、追加のCAを信頼できますc_rehash(必要な場合もあります)yum install /usr/bin/c_rehash)。これは、OpenSSLのデフォルトのトラストストアを使用するソフトウェアでのみ機能します。これは、バンドルファイルの公式更新を引き続き受信できるため、バンドルファイルを編集または置換するよりも優れています。

バンドルファイルの場所の1つを直接使用するソフトウェア(OpenSSLにシステムのデフォルトのトラストストアを使用するよう要求するのではなく)は、変更を尊重しません。そのようなソフトウェアを使用している場合、バンドルファイルの編集(またはソフトウェアの改善)で動けなくなります。OpenSSLをまったく使用しないソフトウェアは、追加された証明書を尊重しません。


3

古いRHEL5ボックスでこれを行う必要がありました。キャッチ22を打った...マシン上の証明書が古すぎてcurl.haxx.se証明書を検証できないため、curlはhttpsダウンロードを拒否しました。

curlの--insecureオプションを使用して、httpsダウンロードを強制しました。(ええ、私は知っています...それは「安全でない」です。)

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


1

RHEL 6、私は更新とRed Hatから最新のCA証明書パッケージを再インストールすることによってこの問題を解決することができました:

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

(私の場合、これは新しい「Let's Encrypt Authority X3」署名証明書を信頼できるようにするのに十分でした。)


コマンドは私のために働いた(CentOS 6)が、問題を解決しなかった(「DigiCert SHA2 Secure Server CA」によって発行された証明書で)
rinogo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.