Posizione predefinita del pacchetto CA Cert


18

Devo aggiungere un file .pem cert al mio pacchetto CA cert predefinito, ma non so dove sia conservato il pacchetto CA Cert predefinito.

Devo aggiungere il mio nuovo file .pem a questo pacchetto predefinito. Preferirei farlo piuttosto che specificare la mia posizione usando --capath

cURL sa chiaramente dove cercare ma non vedo alcun comando cURL che rivela la posizione. Esiste un comando che rivelerà questa posizione? Come posso trovarlo?

Secondo cURL:
aggiungi il certificato CA per il tuo server al pacchetto predefinito certificato CA esistente. Il percorso predefinito del bundle CA utilizzato può essere modificato eseguendo configure con l'opzione --with-ca-bundle indicando il percorso desiderato.

Grazie


Quale sistema operativo stai usando?
Cristian Ciupitu,

Risposte:


20

Correre curlcon stracepotrebbe darti un indizio.

strace curl https://www.google.com | & grep open

Un sacco di output, ma proprio alla fine vedo:

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

che è dove sono archiviati i miei certificati.


2
+1 per avermi mostrato strace!
Robert Dundon,

straceapparentemente non disponibile su macOS. "Equivalente" dtrussmi ha detto "dtrace: impossibile inizializzare dtrace: DTrace richiede ulteriori privilegi". Quindi ci ho usato sudo. A cui ha risposto "dtrace: impossibile eseguire curl: dtrace non può controllare gli eseguibili firmati con diritti limitati". Non molto utile.
LS

17

Dovrebbe esserci un programma 'curl-config' nel 'bin /' del curl, cioè dove risiede il binario 'curl'.

./curl-config --ca

fornisce il percorso di installazione del bundle ca.

Ho appena fatto un whatis curl-config: "Ottieni informazioni su un'installazione di libcurl", quindi suppongo che sarà disponibile solo se libcurl è stato installato, ma presumo sia standard.


1
Ho dovuto installare un pacchetto su Ubuntu per eseguire questo (ti verrà mostrato un elenco di opzioni disponibili se non è installato), ma l'uso di questo comando mi ha portato nel posto giusto!
Robert Dundon,

2
Il curl-configprogramma non è disponibile con tutte le versioni del programma o delle installazioni. Ad esempio, alcuni amministratori potrebbero non comprendere lo scopo del programma e non installarlo perché pensano che sia solo uno strumento di configurazione della build. Inoltre, se l'utente che necessita del programma non è l'amministratore di un sistema, non può installarlo. Ho accesso a due sistemi, non si ha questo programma, l'altro dà nessuna uscita per curl-config --ca.
LS

Preferisco questa risposta a quella accettata - l'uso straceper trovare informazioni di configurazione non dovrebbe essere necessario.
Ken Williams,

7

Ho trovato un modo semplice: utilizzare il --cacertcon un sbagliato il nome del file, l'output mostrerà il percorso.

Esempio:

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

Pensavo che questa sembrasse una buona soluzione. Tuttavia, curl mi ha dato l'errore "77", ma non le informazioni aggiuntive.
LS

@LS prova ad aggiungere un flag dettagliato: -v o --verbose
Chananel P

2

Linux (Ubuntu, Debian)

Copia la tua CA in dir / usr / local / share / ca-certificati /

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

Aggiorna l'archivio CA.

sudo update-ca-certificates

Rimuovi la tua CA e aggiorna l'archivio CA:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Installa il pacchetto ca-certificate:

yum install ca-certificates

Abilita la funzione di configurazione della CA dinamica: update-ca-trust force-enable Aggiungi come nuovo file a /etc/pki/ca-trust/source/anchors/:

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

Linux (CentOs 5)

Aggiungi il tuo certificato di fiducia al file /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 link molto bello, che spiega, come aggiungerlo a diversi sistemi operativi popolari.


Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Gerald Schneider,

@GeraldSchneider> hai letto un commento, e
hai agito

1

è possibile scaricare il bundle CA Root Certificates da haxx.se che sono i creatori di curl. quindi aggiungi semplicemente il tuo certificato nel loro .pem e fai riferimento ad esso quando usi curl con l'opzione --cacert


1

-v con https nell'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*

No. Non ha mostrato nulla di simile per me. In effetti, ho confrontato l'output di quello con un'altra corsa aggiungendo l' -kopzione per vedere se c'è una differenza. Non c'era differenza.
LS

@LS hai https nel tuo URL?
Philip Rego,

0

Il percorso del bundle CA predefinito dipende dal sistema operativo. Su RHEL5, si trova in /etc/pki/tls/certs/ca-bundle.pem. Su altre versioni di sistemi operativi Linux o non Linux, potrebbe trovarsi in una posizione diversa.


Quindi credo di cercare quel file ...
Slinky

2
Un'altra idea: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.