Ubuntu 10.04 / CURL: Jak naprawić / zaktualizować pakiet CA?

17

Niedawno zaktualizowałem nasz serwer z 8.04 do 10.04 i całe oprogramowanie wraz z nim.

Z tego, co znalazłem online, wydaje się, że nowa wersja CURL nie zawiera pakietu urzędu certyfikacji, w wyniku czego nie weryfikuje, czy certyfikat serwera, z którym się łączysz, jest podpisany przez ważny organ .

Rzeczywisty błąd to:

Błąd CURL: problem z certyfikatem SSL, sprawdź, czy certyfikat CA jest OK.
Szczegóły: błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE:
weryfikacja certyfikatu nie powiodła się 

Niektóre znalezione przeze mnie pliki sugerują ręczne określenie pliku CA lub całkowite wyłączenie sprawdzania poprzez ustawienie opcji podczas wywoływania CURL, ale wolałbym raczej rozwiązać problem globalnie, niż musiałbym modyfikować wywołania CURL każdej aplikacji.

Czy istnieje sposób na rozwiązanie problemu CURL dla całego serwera, aby cały istniejący kod aplikacji działał bez zmian?

Nacięcie
źródło

Odpowiedzi:

17

Miałem te same problemy i po tym, jak trochę rozejrzałem się, okazało się, że możesz pobrać pakiet certyfikatów CA gotowy na curl na ubuntu bezpośrednio ze strony curl dev.

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

Teraz curl używa najnowszego pakietu i możesz już iść.

Paul Alexander
źródło
1
potem musiałem zaktualizować za pomocą: update-ca-certyfikaty -f
Grain
9

Miałem podobny problem z uruchomieniem curl z Ubuntu 12.04 z wiersza poleceń, aby uzyskać narzędzia wiersza polecenia aws, które były w github. Znalazłem, jeśli uruchomiłem wiersz poleceń jako taki:

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

to by działało. Ale próba ustawienia zmiennej środowiskowej CURL_CA_BUNDLE, aby uniknąć argumentu „cacert”, nie zadziałałaby. Ostatecznie aktualizacja certyfikatów ca rozwiązała problem:

sudo update-ca-certificates

Na marginesie, w pewnym momencie zaktualizowałem ca-cert z curl.haxx.se, które nie rozwiązały problemu, ale mogły być powiązane. ( sudo wget http://curl.haxx.se/ca/cacert.pembieg z /etc/ssl/certs).

Bob Morley
źródło
Link 404 dla mnie. Działa to: curl.haxx.se/ca/cacert.pem
dave1010
2
Hmm Wydaje się podejrzane, aby pobrać plik zawierający takie certyfikaty, a nie przez HTTPS.
Matthew Schinckel,
5

Zazwyczaj oprogramowanie, które nie ma unikalnej implementacji i jest kompilowane z OpenSSL, będzie odwoływać się do ogólnosystemowego pliku ca-bundle.crt, często znajdującego się w nim /usr/share/ssl/certs.

Lokalizacja może być inna w Ubuntu, ale pakiet OpenSSL powinien zawierać plik ca-bundle.

CURL ma wiele opcji określających sposób weryfikacji certyfikatów.

  • CURL_CA_BUNDLEZmienną środowiskową dla lokalizacji pliku ca-bundle.
  • --capathpozwala określić katalog, w którym znajdują się certyfikaty CA. (Przesłania CURL_CA_BUNDLE)
  • --cacert pozwala określić plik certyfikatu urzędu certyfikacji.

Na moim serwerze CentOS mogę uruchomić następujące polecenie, aby zidentyfikować ścieżkę pakietu ca używaną przez CURL:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt
Warner
źródło
1
Open SSL jest zainstalowany. Mam plik „ca-certyfikaty.crt” w / etc / ssl / certs /, który wygląda jak wiązka certyfikatów połączonych razem, ale myślę, że CURL go nie widzi? Czy CURL ma ustawienie konfiguracji dla pakietu CA?
Nick
Czy na pewno nie jest to typ certyfikatu, który próbuje zweryfikować? Nowsze technologie certyfikatów, takie jak certyfikaty Extended Verification, często wymagają aktualizacji pakietu zbiorczego, ponieważ certyfikaty root są stosunkowo nowe. Sprawdź też moją nadchodzącą edycję.
Warner
curl-config nie wydaje się być prawidłowym poleceniem na Ubuntu. Jak ustawić CURL_CA_BUNDLE?
Nick
Wygląda na to, że jest częścią libcurl3-openssl-devpakietu opartego na szybkim wyszukiwaniu w Internecie. CURL_CA_BUNDLEjest tylko zmienną środowiskową. W bashu CURL_CA_BUNDLE=/path/to/file.
Warner
W porządku, pakiet jest zainstalowany, ale „curl-config --ca” tworzy pustą linię. Próbowałem ustawić zmienną przy użyciu 'CURL_CA_BUNDLE = "/ etc / ssl / certs / ca-certyfikaty.crt". Ale „curl-config --ca” nadal tworzy pusty wiersz.
Nick