Назад | Перейти на главную страницу

Ubuntu 10.04 / CURL: как исправить / обновить пакет CA?

Недавно я обновил наш сервер с 8.04 до 10.04 и все программное обеспечение вместе с ним.

Из того, что я нашел в Интернете, похоже, что новая версия CURL не включает пакет CA и, как следствие, не может проверить, что сертификат сервера, к которому вы подключаетесь, подписан действующим органом. .

Фактическая ошибка:

CURL error: SSL certificate problem, verify that the CA cert is OK.
Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:
certificate verify failed 

Некоторые люди, которых я обнаружил, предлагают вручную указать файл CA или полностью отключить проверку, установив параметр при вызове CURL, но я бы предпочел исправить проблему глобально, а не изменять вызовы CURL каждого приложения.

Есть ли способ исправить проблему CA CURL на сервере, чтобы весь существующий код приложения работал как есть, не нуждаясь в изменении?

У меня была такая же проблема, и после небольшого поиска я обнаружил, что вы можете загрузить пакет CA-сертификатов, готовых для curl на ubuntu, прямо с сайта curl dev.

cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem

Теперь curl использует самую последнюю версию пакета, и все готово.

Была аналогичная проблема с Ubuntu 12.04 запуск curl из командной строки, чтобы получить инструменты командной строки aws, которые были в github. Я обнаружил, запустил ли я командную строку как таковую:

curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt

это сработает. Но попытка установить переменную среды CURL_CA_BUNDLE, чтобы я мог избежать аргумента «cacert», не сработает. В конечном итоге обновление ca-сертификатов, похоже, решило проблему:

sudo update-ca-certificates

Кстати, однажды я обновил сертификаты из curl.haxx.se, которые не помогли решить проблему, но, возможно, были связаны. (sudo wget http://curl.haxx.se/ca/cacert.pem бежать от /etc/ssl/certs).

Обычно программное обеспечение, не имеющее уникальной реализации и скомпилированное с использованием OpenSSL, будет ссылаться на общесистемный файл ca-bundle.crt, который часто находится в /usr/share/ssl/certs.

Местоположение может быть другим в Ubuntu, но пакет OpenSSL должен включать файл ca-bundle.

CURL имеет множество параметров, чтобы указать, как он проверяет сертификаты.

  • В CURL_CA_BUNDLE переменная окружения для расположения файла ca-bundle.
  • --capath позволяет указать каталог, в котором расположены сертификаты ЦС. (Отменяет CURL_CA_BUNDLE)
  • --cacert позволяет указать файл сертификата ЦС.

На моем сервере CentOS я могу запустить следующее, чтобы определить путь ca-bundle, который использует CURL:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt