Jak naprawić problemy z certyfikatem CA z Curl w Ubuntu 14.04?

14

Używam Ubuntu 14.04. Kiedy używam curl, pojawia się następujący błąd:

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

Z tego, co zbieram od Google'a, lokalizacja pliku CA, którego szuka, nie jest poprawna dla Ubuntu (i nie istnieje na moim komputerze), /etc/ssl/certs/ca-certificates.crtjest właściwą lokalizacją.

Większość rozwiązań polegała na ustawieniu zmiennej środowiskowej CURL_CA_BUNDLEwe właściwej lokalizacji lub dodaniu cacert=/etc/ssl/certs/ca-certificates.crtdo (nowo utworzonego) .curlrcpliku w moim katalogu domowym. Próbowałem obu, ale żadne z nich nie rozwiązało całkowicie problemu. curl znajduje tę lokalizację, ale nadal nie działa, co powoduje błąd:

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

Próbowałem również odinstalować i ponownie zainstalować curl w Ubuntu i zaktualizować moje certyfikaty CA, dzięki $ sudo update-ca-certificates --fresh którym zaktualizowałem certyfikaty, ale nadal nie sprawiłem, że błąd 60 zniknął.

Nie mam wystarczającej wiedzy na temat certyfikatów CA i wątpię, że celowo dodałem kiedyś samopodpisany certyfikat. Być może przez przypadek nie wiem.

Czy ktoś wie, jak to naprawić? Czy istnieje sposób, aby zacząć od nowa z wszystkimi moimi certyfikatami? A może ktoś wie, jak mogę dowiedzieć się, gdzie jest ten samopodpisany certyfikat, a następnie jak go usunąć?

PS: Nie chcę używać flagi -k (aka --insecure). Chcę, aby działało to bezpiecznie.

w lesie
źródło

Odpowiedzi:

11

Po kilku badaniach i pracach nad tym w ciągu ostatnich kilku dni udało mi się go uruchomić, a odpowiedź była dość prosta.

Musiałem ustawić capath=/etc/ssl/certs/w swoim .curlrcpliku.

To zawijało się w wierszu poleceń. Aby dalej uzyskać curl do pracy w R (gdzie po raz pierwszy napotkałem problem), musiałem również mieć cacert=/etc/ssl/certs/ca-certificates.crtw swoim .curlrcpliku, jak próbowałem wcześniej, w przeciwnym razie nadal szukał/etc/pki/tls/certs/ca-bundle.crt

Nadal nie mam pojęcia, dlaczego widziałem błąd dotyczący certyfikatów z podpisem własnym.

Na podstawie innych losowych wyników pobrałem również certyfikat ze strony Curl z:

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

do tego samego certskatalogu. Po cafilewskazaniu na to również działało. W końcu przywróciłem go ca-certificates.crti nadal działa.

Nie rozumiem dokładnie, dlaczego to zadziałało lub co się dzieje, ale zostało to rozwiązane.

w lesie
źródło
9

klawisz cafile nie działa dla mnie (curl 7.45.0), ale cacert (z opcji --cacert) działa. Mój plik .curlrc :

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
Książę
źródło
1
to działało dla mnie na Ubuntu 16.04!
Joost Döbken
0

Ten sam problem napotkaliśmy w jednym z naszych programów C ++ w Ubuntu 14.04.5. Metoda .curlrc nie działała.

Zostało to rozwiązane poprzez pobranie pliku ca-certyfikaty.crt do /etc/ssl/certs/ca-certificates.crt i utworzenie dowiązania symbolicznego ca-bundle.crt w katalogu / etc / pki / tls / certs / .

Mam nadzieję że to pomoże!

Tamil
źródło
0

Po kilkakrotnych badaniach udało mi się go uruchomić, a odpowiedź była dość prosta. Rób krok po kroku

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

Krok 3 spowoduje pobranie pliku pem z folderu certs

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

.curlrc to ukryty plik. sprawdź przez ctrl + h w katalogu domowym. jeśli nie, to na typie terminala

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 Tutaj użyłem edytora nano, ale możesz użyć dowolnego edytora.

PyDevSRS
źródło