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


17

Нещодавно я оновив наш сервер з 8.04 до 10.04, і все програмне забезпечення разом з ним.

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

Фактична помилка:

Помилка CURL: проблема з сертифікатом SSL, перевірте, чи підтверджено сертифікат CA.
Деталі: помилка: 14090086: Підпрограми SSL: SSL3_GET_SERVER_CERTIFICATE:
помилка перевірки сертифіката 

Деякі знайдені нами підказки пропонують вручну вказати файл CA або взагалі відключити чек, встановивши опцію, коли ви викликаєте CURL, але я б набагато краще вирішити проблему в усьому світі, а не змінювати виклики CURL кожної програми.

Чи є спосіб виправити проблему сервера CURL на всьому сервері, щоб усі існуючі коди програми працювали так, як не потрібно змінювати?

Відповіді:


17

У мене виникли ті самі проблеми, і після трохи обмірковував, виявив, що ви можете завантажити пакет CA-цертів, готових до згортання, на ubuntu безпосередньо з сайту розробки curl.

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

Тепер curl використовує найсучасніший пакет, і ви готові йти.


1
після цього мені довелося оновити з: update-ca-сертифікати -f
Зерно

9

Виникла аналогічна проблема з запуском curl Ubuntu 12.04 з командного рядка, щоб отримати інструменти командного рядка 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).


Посилання 404'd для мене. Це працює: curl.haxx.se/ca/cacert.pem
dave1010

2
Хм. Здається, недоступний для отримання файлу, що містить подібні certs, а не HTTPS.
Метью Шинкель

5

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

Розташування може бути різним у Ubuntu, але пакет OpenSSL повинен містити файл ca-bundle.

CURL має різноманітні параметри для визначення способів перевірки сертифікатів.

  • CURL_CA_BUNDLEЗмінна середовища для розташування са-розшаруванням файлу.
  • --capathдозволяє вказати каталог, де знаходяться сертифікати CA. (Відміняє CURL_CA_BUNDLE)
  • --cacert дозволяє вказати файл сертифіката CA.

На моєму сервері CentOS я можу виконати наступне для ідентифікації шляху ca-bundle, який використовує CURL:

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

1
Встановлений відкритий SSL. У мене є файл "ca-certifikat.crt" в / etc / ssl / certs /, схожий на купу сертифікатів, об'єднаних разом, але я думаю, що CURL його не бачить? Чи має CURL налаштування конфігурації для пакету CA?
Нік

Ви впевнені, що це не той тип сертифіката, який він намагається перевірити? Новіші технології сертифікатів, такі як certs Extended Verification, часто потребують оновлення ca-bundle, оскільки кореневі certs є відносно новими. Ознайомтесь і з моєю майбутньою редакцією.
Warner

curl-config не здається дійсною командою в Ubuntu. Як встановити CURL_CA_BUNDLE?
Нік

Схоже, це частина libcurl3-openssl-devпакету на основі швидкого пошуку в Інтернеті. CURL_CA_BUNDLEце лише змінна середовище. У Баш, CURL_CA_BUNDLE=/path/to/file.
Warner

Добре, пакет встановлений, але "curl-config --ca" створює порожній рядок. Я спробував встановити змінну за допомогою 'CURL_CA_BUNDLE = "/ etc / ssl / certs / ca-certi.crt"'. Але "curl-config --ca" все-таки видає порожній рядок згодом.
Нік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.