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.