Я сталкиваюсь с проблемами, когда пакет 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?
Рекомендуемый способ сделать это в системах RHEL 6+ - использовать инструмент update-ca-trust , который теперь установлен по умолчанию.
Следовательно, вам нужно всего лишь перенести файл crt в
/etc/pki/ca-trust/source/anchors/
и запустить инструмент. Работа сделана. Это безопасно, вам не нужно делать никаких резервных копий. Полная страница руководства может быть найдена здесь: https://www.mankier.com/8/update-ca-trustисточник
RHEL предоставляет сертификаты Mozilla CA как часть
ca-certificates
пакета (установите его,yum
если он еще не установлен). Чтобы сказать cURL использовать их, используйте--cacert
параметр следующим образом.источник
yum install ca-certificates
и получилNo package ca-certificates available
ca-certificates.noarch 0:2014.1.98-70.0.el7_0
- это, к сожалению, не решило мою проблему, но просто подумал, что добавлю эту информацию.Вероятно, зависит, какая версия Redhat. Вы можете найти, какой пакет на самом деле обновляет файл, выполнив:
Мой результат показал, что openssl-0.9.8e-12.el5 необходимо обновить.
Если в вашем дистрибутиве нет обновленных сертификатов, вы должны обновить вручную, согласно ответу Nada.
источник
После комментария Дэна Притса Red Hat все чаще обновляет пакеты сертификатов для поддерживаемых выпусков RHEL; Вы можете легко увидеть это в журнале изменений пакетов. Сертификаты RHEL 6 были обновлены дважды в 2013 году и дважды в 2014 году.
Все RHEL и связанные с ним / clone / производные дистрибутивы предоставляют пакетный файл в
/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 / pki / tls / certs и запустив ихc_rehash
(может также потребоватьсяyum install /usr/bin/c_rehash
). Это будет работать только для программного обеспечения, которое использует хранилища доверия OpenSSL по умолчанию. Это лучше, чем редактирование или замена файла пакета, поскольку он позволяет вам продолжать получать официальные обновления файла пакета.Программное обеспечение, которое напрямую использует одно из расположений файла пакета (вместо того, чтобы просить OpenSSL использовать хранилища доверенных сертификатов системы по умолчанию), не будет учитывать это изменение; если у вас есть такое программное обеспечение, вы застряли в редактировании файла пакета (или улучшении программного обеспечения). Программное обеспечение, которое вообще не использует OpenSSL, не будет соответствовать добавленному сертификату.
источник
Я просто должен был сделать это на старой коробке RHEL5. Я нажал на уловку 22 ... curl отклонил бы загрузку https, потому что сертификаты на машине были слишком старыми для проверки сертификатов curl.haxx.se.
Я использовал параметр --insecure для curl, чтобы принудительно загрузить https. (Да, я знаю ... это "небезопасно".)
источник
В RHEL 6 я смог это исправить, обновив и переустановив последний пакет сертификатов CA от Red Hat:
(В моем случае этого было достаточно, чтобы позволить более новому сертификату подписи «Let's Encrypt Authority X3»).
источник