Як виправити проблеми CA cert з Curl в Ubuntu 14.04?


14

Я використовую Ubuntu 14.04. Коли я використовую curl, я отримую таку помилку:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

З того, що я збираю з googling, розташування CAfile, яке він шукає, не є правильним для Ubuntu (і воно не існує на моєму комп’ютері), /etc/ssl/certs/ca-certificates.crtце правильне розташування.

Більшість рішень стосувалися встановлення змінної середовища CURL_CA_BUNDLEна потрібне місце або додавання cacert=/etc/ssl/certs/ca-certificates.crtдо (щойно створеного) .curlrcфайлу в моєму домашньому каталозі. Я спробував і те, і інше, але повністю не вирішив питання. curl знаходить це місце, але воно все ще не працює, надаючи помилку:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

Я також спробував видалити та перевстановити curl в Ubuntu та оновити свої сертифікати CA, за допомогою $ sudo update-ca-certificates --fresh яких оновлено certs, але все ж не зробило помилки 60.

Я не знаю, що стосується сертифікатів CA, і я сумніваюся, що я навмисно додав сертифікат, який я самостійно підписав. Можливо, випадково, я не знаю.

Хтось знає, як це виправити? Чи є спосіб насправді почати свіжий зі всіх моїх сертів? Або хтось навіть знає, як я розбираюся, де знаходиться цей самопідписаний сертифікат, а потім як його видалити?

PS: Я не хочу використовувати прапор -k (він же - незахищений). Я хочу, щоб це працювало надійно.

Відповіді:


11

Після дослідження та роботи над цим протягом останніх кількох днів я змусив його працювати, і відповідь виявилася досить простою.

Мені потрібно було встановити capath=/etc/ssl/certs/у свій .curlrcфайл.

Це отримало згортання роботи в командному рядку. Щоб надалі згортати роботу в R (де я вперше зіткнувся з проблемою), мені також потрібно було мати cacert=/etc/ssl/certs/ca-certificates.crtу своєму .curlrcфайлі, як це було раніше, інакше він продовжував шукати/etc/pki/tls/certs/ca-bundle.crt

Я досі не маю уявлення, чому я бачив помилку щодо самопідписаних сертифікатів.

На підставі деяких інших випадкових висновків я також завантажив сертифікат з веб-сайту Curl з:

sudo wget http://curl.haxx.se/ca/cacert.pem

в той самий certsкаталог. Вказавши cafileна це, також працювало. Врешті-решт я повертаю його назад, ca-certificates.crtі він все ще працює.

Я не розумію, чому це спрацювало чи що відбувається, але це вирішено.


9

ключ cafile не працює для мене (curl 7.45.0), але cacert (від --cacert варіант) робить. Мій файл .curlrc :

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

1
це працювало для мене на Ubuntu 16.04!
Joost Döbken

0

З такою ж проблемою ми стикалися з однією з наших програм C ++ в Ubuntu 14.04.5. Метод .curlrc не вступив у дію.

Це було вирішено, завантаживши файл ca- certi.crt в /etc/ssl/certs/ca-certificate.crt та створивши символьне посилання ca-bundle.crt в / etc / pki / tls / certs / каталог.

Сподіваюся, це допомагає!


0

Після декількох досліджень я змусив його працювати, і відповідь виявилася досить простою. Зробіть поетапно

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

Крок 3 завантажить файл pem у папку certs

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc - це прихований файл. перевірити ctrl + h у домашньому каталозі. якщо немає, то на термінальному типі

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

NB Тут я використовував наноредактор, але ви можете використовувати будь-який редактор.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.