Domyślna lokalizacja pakietu certyfikatów CA


18

Muszę dodać plik .pem cert do mojego domyślnego pakietu CA Cert, ale nie wiem, gdzie jest przechowywany domyślny pakiet CA Cert.

Muszę dołączyć mój nowy plik .pem do tego domyślnego pakietu. Wolę to zrobić niż podać własną lokalizację, używając --capath

cURL wyraźnie wie, gdzie szukać, ale nie widzę żadnych poleceń cURL, które ujawniłyby lokalizację. Czy istnieje polecenie, które ujawni tę lokalizację? Jak mogę to znaleźć?

Zgodnie z cURL:
Dodaj certyfikat CA dla swojego serwera do istniejącego domyślnego pakietu certyfikatów CA. Domyślną ścieżkę używanego pakietu CA można zmienić, uruchamiając config z opcją --with-ca-bundle wskazującą wybraną ścieżkę.

Dzięki


Jakiego systemu operacyjnego używasz?
Cristian Ciupitu,

Odpowiedzi:


20

Bieganie curlz stracemoże dać ci wskazówkę.

strace curl https://www.google.com | i grep otwarte

Dużo produkcji, ale tuż pod koniec widzę:

open ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

gdzie przechowywane są moje certyfikaty.


2
+1 za pokazanie mi o strace!
Robert Dundon

stracenajwyraźniej niedostępne na macOS. „Odpowiednik” dtrusspowiedział mi „dtrace: nie udało się zainicjować dtrace: DTrace wymaga dodatkowych uprawnień”. Więc użyłem sudoz tym. Na co odpowiedział: „dtrace: nie można wykonać curl: dtrace nie może kontrolować plików wykonywalnych podpisanych ograniczonymi uprawnieniami”. Niezbyt pomocny.
LS

17

W „bin /” curl powinien znajdować się program „curl-config”, tzn. Gdzie znajduje się plik binarny „curl”.

./curl-config --ca

daje ścieżkę instalacji pakietu ca.

Właśnie zrobiłem whatis curl-config: „Uzyskaj informacje o instalacji libcurl”, więc myślę, że będzie ona dostępna tylko, jeśli libcurl został zainstalowany, co, jak sądzę, jest standardem.


1
Musiałem zainstalować pakiet na Ubuntu, aby go uruchomić (zostanie wyświetlona lista dostępnych opcji, jeśli nie jest zainstalowany), ale użycie tego polecenia doprowadziło mnie do właściwego miejsca!
Robert Dundon

2
curl-configProgram nie jest dostępny ze wszystkimi wersjami programu lub instalacji. Na przykład niektórzy administratorzy mogą nie rozumieć celu programu i nie zainstalować go, ponieważ uważają, że jest to tylko narzędzie do konfiguracji kompilacji. Ponadto, jeśli użytkownik, który potrzebuje programu, nie jest administratorem systemu, nie może go zainstalować. Mam dostęp do dwóch systemów, nie ma tego programu, drugi daje żadnego wyjścia dla curl-config --ca.
LS

Wolę tę odpowiedź od zaakceptowanej - użycie straceinformacji o konfiguracji nie powinno być konieczne.
Ken Williams

7

Znalazłem prosty sposób: użyj --cacertz niepoprawną nazwą pliku, wynik wyświetli ścieżkę.

Przykład:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

Myślałem, że to wygląda na dobre rozwiązanie. Jednak curl dał mi błąd „77”, ale nie dodatkowe informacje.
LS

@LS spróbuj dodać szczegółową flagę: -v lub --verbose
Chananel P

2

Linux (Ubuntu, Debian)

Skopiuj swój urząd certyfikacji do katalogu / usr / local / share / ca-certyfikaty /

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Zaktualizuj sklep CA

sudo update-ca-certificates

Usuń urząd certyfikacji i zaktualizuj sklep urzędu certyfikacji:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Zainstaluj pakiet ca-certyfikatów:

yum install ca-certificates

Włącz funkcję konfiguracji dynamicznego urzędu certyfikacji: update-ca-trust force-enable Dodaj go jako nowy plik do /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux (CentOs 5)

Dołącz zaufany certyfikat do pliku /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html bardzo fajny link, który wyjaśnia, jak dodać go do kilku popularnych systemów operacyjnych.


Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Gerald Schneider,

@GeraldSchneider> komentujesz, czytasz i działałeś;)
BiG_NoBoDy

1

możesz pobrać pakiet CA Root Certificates z haxx.se, którzy są twórcami curl. następnie po prostu dołącz swój certyfikat do pliku .pem i odwołaj się do niego, gdy używasz curl z opcją --cacert


1

-v z https w adresie URL.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

Nie. Nie pokazało mi to czegoś takiego. W rzeczywistości porównałem dane wyjściowe z innym uruchomieniem, dodając -kopcję sprawdzenia, czy jest jakaś różnica. Nie było różnicy.
LS

@LS Czy masz https w swoim adresie URL?
Philip Rego

0

Domyślna lokalizacja pakietu CA zależy od systemu operacyjnego. Na RHEL5 znajduje się w /etc/pki/tls/certs/ca-bundle.pem. W innych wersjach systemów Linux i innych niż Linux może być w innej lokalizacji.


Więc chyba po prostu szukam tego pliku ...
Slinky,

2
Kolejny pomysł: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.