Як оновити пакет CURL CA на RedHat?


38

Я стикаюся з проблемами, коли пакет CA, який входить до моєї версії CURL, застарів.

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. Що мені потрібно зробити, щоб оновити пакет CA на RedHat?

Відповіді:


50

Для RHEL 6 або новішої версії вам слід використовувати update-ca-trust , як описує lzap у своїй відповіді нижче.

--- Для старих версій Fedora, CentOS, Redhat:

Curl використовує системний пакет за замовчуванням, який зберігається в /etc/pki/tls/certs/ca-bundle.crt. Перш ніж змінити його, зробіть копію цього файлу, щоб ви могли відновити систему за замовчуванням. Ви можете просто додати нові сертифікати ЦС до цього файлу або замінити весь пакет.

Вам також цікаво, де взяти сертифікати? Я (та інші) рекомендую 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.


Це добре, але як я можу бути впевненим, що сертифікат, який я додаю, не буде втрачений під час наступного оновлення ca-bundle.crt? Чи є місце, де я можу помістити нове, куди воно буде автоматично включено?
Ендрю Шульман

Станом на 2006 рік, оновлення Opensl не повинна замінювати файл ca-bundle.crt (див. Rhn.redhat.com/errata/RHSA-2006-0661.html ). Однак якщо у вас встановлений інший пакет, як-от пакет ca-сертифікатів, рекомендований @mgorven, то, сподіваюся, він буде перезаписаний вручну.
Нада

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 надає сертифікати Mozilla CA як частину ca-certificatesпакету (встановіть це за допомогоюyum якщо він ще не встановлений). Щоб сказати cURL, щоб вони використовували ці --cacertпараметри , використовуйте такий параметр.

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

Я спробував yum install ca-certificatesі отримавNo package ca-certificates available
Ендрю

1
RHEL6 має цей пакет; Я здогадуюсь, що ви використовуєте старішу версію. На жаль, список не змінився з 2010 року, дякуючи за те, що ми постійно інформували нас.
Dan Pritts

Я використовую RHEL7 на AWS EC2, я просто оновив пакунок до 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

З моменту коментаря Дена Прітта Red Hat частіше оновлює пакети сертифікатів для підтримуваних релізів RHEL; це ви можете легко побачити в журналі змін. Сертифікати RHEL 6 оновлювались двічі у 2013 році та двічі у 2014 році.

Усі дистрибутивні RHEL та пов'язані з ними / клони / похідні дистрибутивні файли надають пакет файлів у /etc/pki/tls/certs/ca-bundle.crt, а той самий файл /etc/pki/tls/cert.pem(у старих дистрибутивах cert.pemє символьним посиланням на, ca-bundle.crtа в більш нових дистрибутивах обидва - це посилання на файл, що виводиться update-ca-trust).

У RHEL 6 та новіших версіях пакет є частиною пакету "ca-сертифікатів". У 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 за замовчуванням. Це краще, ніж редагувати або замінювати файл пакету, оскільки він дозволяє продовжувати отримувати офіційні оновлення файлу пакета.

Програмне забезпечення, яке використовує одне з розташувань файлів пакету безпосередньо (замість того, щоб просити OpenSSL використовувати системні довірені сховища за замовчуванням), не поважатиме ці зміни; якщо у вас є таке програмне забезпечення, ви зациклювались на редагуванні файлу пакету (або вдосконаленні програмного забезпечення). Програмне забезпечення, яке взагалі не використовує OpenSSL, не поважатиме доданий сертифікат.


3

Мені просто довелося це зробити на старій коробці RHEL5. Я натиснув на улов 22 ... curl буде відхилити завантаження https, оскільки сертифікати на машині були занадто старими, щоб підтвердити cerl.haxx.se certs.

Я застосував - невпевнений варіант curl, щоб змусити завантажити https. (Так, я знаю ... це "небезпечно".)

завиток https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt


1

Для RHEL 6 мені вдалося виправити це шляхом оновлення та повторної інсталяції останнього пакету сертифікатів CA від Red Hat:

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

(У моєму випадку цього було достатньо, щоб довіряти новим сертифікатам підпису "Let's Encrypt Authority X3".)


Команда працювала на мене (CentOS 6), але не вирішила мою проблему (із сертом, виданим "DigiCert SHA2 Secure Server CA")
rinogo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.