web-dev-qa-db-ja.com

RedHatでcURL CAバンドルを更新する方法

私のバージョンの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バンドルを更新するには何をする必要がありますか?

38
Andrew

RHEL 6以降の場合、lzapが以下の回答で説明するように、pdate-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

49
Nada

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

37
lzap

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

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

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

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

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

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

6
Pik Master

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.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に配置することで、追加のCAを信頼できます。/pki/tls/certsおよび実行中のc_rehashyum install /usr/bin/c_rehashも必要になる場合があります)。これは、OpenSSLのデフォルトのトラストストアを使用するソフトウェアでのみ機能します。これにより、バンドルファイルの公式アップデートを引き続き受信できるため、バンドルファイルを編集または置換するよりも優れています。

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

6
Adam Williamson

古い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

3
Leonard

RHEL 6の場合、Red Hatから最新のCA証明書パッケージを更新して再インストールすることでこれを修正できました。

Sudo yum update ca-certificates
Sudo yum reinstall ca-certificates

(私の場合、これで新しい「Let’s Encrypt Authority X3」署名証明書を信頼できるようになりました。)

1
Jeremy