Bagaimana cara memperbarui bundel cURL CA di RedHat?

38

Saya mengalami masalah di mana bundel CA yang telah dibundel dengan versi CURL saya sudah usang.

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

Membaca dokumentasi tidak membantu saya karena saya tidak mengerti apa yang perlu saya lakukan atau bagaimana melakukannya. Saya menjalankan RedHat dan perlu memperbarui bundel CA. Apa yang harus saya lakukan untuk memperbarui bundel CA saya di RedHat?

Andrew
sumber

Jawaban:

50

Untuk RHEL 6 atau lebih baru , Anda harus menggunakan pembaruan-ca-trust , seperti yang dijelaskan lzap dalam jawabannya di bawah ini.

--- Untuk versi lama dari Fedora, CentOS, Redhat:

Curl menggunakan bundel CA sistem-default disimpan di /etc/pki/tls/certs/ca-bundle.crt. Sebelum Anda mengubahnya, buat salinan file itu sehingga Anda dapat mengembalikan sistem default jika perlu. Anda cukup menambahkan sertifikat CA baru ke file itu, atau Anda dapat mengganti seluruh bundel.

Apakah Anda juga bertanya-tanya dari mana mendapatkan sertifikat? Saya (dan lainnya) merekomendasikan curl.haxx.se/ca. Dalam satu baris:

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

Lokasi Fedora Core 2 adalah /usr/share/ssl/certs/ca-bundle.crt.

Nada
sumber
Itu bagus, tetapi bagaimana saya bisa yakin bahwa sertifikat yang saya tambahkan tidak akan hilang pada pembaruan ca-bundle.crt berikutnya? Apakah ada tempat saya dapat meletakkan yang baru di mana ia akan dimasukkan secara otomatis?
Andrew Schulman
Pada 2006, upgrade openssl tidak boleh menggantikan file ca-bundle.crt (lihat rhn.redhat.com/errata/RHSA-2006-0661.html ). Namun, jika Anda memiliki paket lain yang diinstal, seperti paket ca-sertifikat yang direkomendasikan oleh @mgorven, maka saya berharap itu akan ditimpa secara manual.
Nada
36

Cara yang disarankan untuk melakukan itu pada sistem RHEL 6+ adalah dengan menggunakan alat pembaruan-ca-trust , yang sekarang diinstal secara default.

# 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

Karena itu, Anda hanya perlu meletakkan file crt ke /etc/pki/ca-trust/source/anchors/dan untuk menjalankan alat. Kerja selesai. Ini aman untuk dilakukan, Anda tidak perlu melakukan backup apa pun. Halaman manual lengkap dapat ditemukan di sini: https://www.mankier.com/8/update-ca-trust

lzap
sumber
Hai, apakah itu bekerja untuk Anda? Saya hanya mencoba mengikuti skenario dari access.redhat.com/solutions/1549003 dan itu tidak berhasil untuk saya.
Kirby
6

RHEL memberikan sertifikat Mozilla CA sebagai bagian dari ca-certificatespaket (instal ini yumjika belum diinstal). Untuk memberitahu cURL untuk menggunakan ini, gunakan --cacertparameter seperti itu.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
Mgorven
sumber
Saya mencoba yum install ca-certificatesdan mendapatkanNo package ca-certificates available
Andrew
1
RHEL6 memiliki paket ini; Saya kira Anda menggunakan versi yang lebih lama. Sayangnya daftar ini tidak berubah sejak 2010, terima kasih telah membuat kami tetap update.
Dan Pritts
Saya menggunakan RHEL7 pada AWS EC2, saya baru saja memutakhirkan paket saya ca-certificates.noarch 0:2014.1.98-70.0.el7_0- sayangnya tidak menyelesaikan masalah saya, tetapi saya pikir saya akan menambahkan informasi ini.
DuffJ
6

Mungkin tergantung versi Redhat mana. Anda dapat menemukan paket mana yang benar-benar memperbarui file dengan melakukan:

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

Hasil saya menunjukkan bahwa openssl-0.9.8e-12.el5 perlu diperbarui.

Jika tidak ada sertifikat yang diperbarui dalam distribusi Anda, Anda harus memperbarui secara manual, sesuai jawaban Nada.

Pik Master
sumber
6

Sejak komentar Dan Pritts, Red Hat telah memperbarui bundel sertifikat untuk rilis RHEL yang didukung lebih sering; Anda bisa melihatnya dengan cukup mudah di changelog paket. Sertifikat RHEL 6 diperbarui dua kali pada tahun 2013 dan dua kali pada tahun 2014.

Semua RHEL dan distro terkait / klon / turunan menyediakan file bundel di /etc/pki/tls/certs/ca-bundle.crt, dan file yang sama di /etc/pki/tls/cert.pem(pada distro yang lebih lama cert.pemadalah symlink ke ca-bundle.crt; pada distro yang lebih baru keduanya symlink ke output file dengan update-ca-trust).

Dalam RHEL 6 dan yang lebih baru, bundel adalah bagian dari paket 'ca-sertifikat'. Di RHEL 5 dan sebelumnya itu adalah bagian dari paket 'openssl'.

Di RHEL 6 dengan pembaruan https://rhn.redhat.com/errata/RHEA-2013-1596.html dan RHEL yang lebih baru, tersedia sistem 'sertifikat sistem bersama' (Anda harus menjalankan update-ca-trust enableuntuk mengaktifkannya) dan yang terbaik Metode yang diberikan oleh lzap. Manfaat dari sistem ini adalah ia berfungsi untuk aplikasi berbasis NSS dan GnuTLS serta yang berbasis OpenSSL. Perhatikan bahwa Anda juga dapat tidak mempercayai sertifikat dengan menempatkannya di direktori /etc/pki/ca-trust/source/blacklist/.

Di RHEL 5 dan yang lebih lama (dan RHEL 6 jika Anda tidak ingin menggunakan sistem baru), Anda dapat mempercayai CA tambahan dengan menempatkan file sertifikat PEM yang diformat dengan ekstensi.pem di / etc / pki / tls / certs dan berjalan c_rehash(mungkin juga perlu yum install /usr/bin/c_rehash). Ini hanya akan berfungsi untuk perangkat lunak yang menggunakan toko kepercayaan default OpenSSL. Ini lebih baik daripada mengedit atau mengganti file bundel karena memungkinkan Anda untuk terus menerima pembaruan resmi ke file bundel.

Perangkat lunak yang menggunakan salah satu lokasi file bundel secara langsung (alih-alih meminta OpenSSL untuk menggunakan sistem penyimpanan kepercayaan default) tidak akan menghargai perubahan; jika Anda memiliki perangkat lunak seperti itu, Anda terjebak mengedit file bundel (atau meningkatkan perangkat lunak). Perangkat lunak yang tidak menggunakan OpenSSL sama sekali tidak akan menghormati sertifikat yang ditambahkan.

Adam Williamson
sumber
3

Saya hanya harus melakukan ini pada kotak RHEL5 lama. Saya menekan tombol 22 ... curl akan menolak unduhan https karena sertifikat pada mesin terlalu tua untuk memvalidasi sertifikat curl.haxx.se.

Saya menggunakan opsi --insecure dari curl untuk memaksa unduhan https. (Ya, aku tahu ... itu "tidak aman".)

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

Leonard
sumber
1

Untuk RHEL 6 , saya dapat memperbaikinya dengan memperbarui dan menginstal ulang paket CA certs terbaru dari Red Hat:

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

(Dalam kasus saya, ini cukup untuk memungkinkan sertifikat penandatanganan "Let's Encrypt Authority X3" yang lebih baru dipercaya.)

Jeremy
sumber
Perintah itu bekerja untuk saya (CentOS 6) tetapi tidak menyelesaikan masalah saya (dengan sertifikat yang dikeluarkan oleh "DigiCert SHA2 Secure Server CA")
rinogo