私のバージョンの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バンドルを更新するには何をする必要がありますか?
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
。
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
RHELは、Mozilla CA証明書をca-certificates
パッケージの一部として提供します(まだインストールされていない場合は、yum
でインストールします)。これらを使用するようにcURLに指示するには、そのような--cacert
パラメータを使用します。
curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
おそらくRedhatのバージョンに依存します。実際にファイルを更新するパッケージを見つけるには、次のようにします。
rpm -qf /etc/pki/tls/certs/ca-bundle.crt
私の結果はopenssl-0.9.8e-12.el5を更新する必要があることを示していました。
ディストリビューションに更新された証明書がない場合、Nadaの回答に従って手動で更新する必要があります。
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」パッケージの一部です。
更新済みの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_rehash
(yum install /usr/bin/c_rehash
も必要になる場合があります)。これは、OpenSSLのデフォルトのトラストストアを使用するソフトウェアでのみ機能します。これにより、バンドルファイルの公式アップデートを引き続き受信できるため、バンドルファイルを編集または置換するよりも優れています。
バンドルファイルの場所の1つを直接使用するソフトウェア(システムのデフォルトのトラストストアを使用するようにOpenSSLに要求するのではなく)は、変更を尊重しません。そのようなソフトウェアを使用している場合、バンドルファイルの編集(またはソフトウェアの改善)に行き詰まっています。 OpenSSLをまったく使用しないソフトウェアは、追加された証明書を尊重しません。
古い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
RHEL 6の場合、Red Hatから最新のCA証明書パッケージを更新して再インストールすることでこれを修正できました。
Sudo yum update ca-certificates
Sudo yum reinstall ca-certificates
(私の場合、これで新しい「Let’s Encrypt Authority X3」署名証明書を信頼できるようになりました。)