Ubuntu 10.04 / CURL: Come posso correggere / aggiornare il pacchetto CA?


17

Di recente ho aggiornato il nostro server dall'8.04 al 10.04 e tutto il software insieme ad esso.

Da quello che ho trovato online, sembra che la nuova versione di CURL non includa un bundle CA e, di conseguenza, non riesca a verificare che il certificato del server a cui ti stai connettendo sia firmato da un'autorità valida .

L'errore reale è:

Errore CURL: problema certificato SSL, verificare che il certificato CA sia OK.
Dettagli: errore: 14090086: routine SSL: SSL3_GET_SERVER_CERTIFICATE:
verifica del certificato non riuscita 

Alcuni casi che ho trovato suggeriscono di specificare manualmente un file CA o disabilitare del tutto il controllo impostando un'opzione quando si chiama CURL, ma preferirei piuttosto risolvere il problema a livello globale, piuttosto che dover modificare le chiamate CURL di ogni applicazione.

C'è un modo per risolvere il problema CA di CURL a livello di server in modo che tutto il codice dell'applicazione esistente funzioni così com'è senza la necessità di essere modificato?

Risposte:


17

Ho avuto lo stesso problema e dopo aver frugato un po 'ho scoperto che puoi scaricare un pacchetto di CA-certs pronto per il ricciolo su Ubuntu direttamente dal sito di sviluppo del ricciolo.

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

Ora curl utilizza il bundle più aggiornato e sei a posto.


1
dopo di che ho dovuto aggiornare con: update-ca-certificati -f
Grain

9

Ha avuto un problema simile con Ubuntu 12.04 in esecuzione curl dalla riga di comando per ottenere strumenti da riga di comando aws che erano in github. Ho trovato se avessi eseguito la riga di comando in quanto tale:

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

avrebbe funzionato. Ma provare a impostare la variabile d'ambiente CURL_CA_BUNDLE in modo da evitare l'argomento "cacert" non funzionerebbe. L'aggiornamento finale dei certificati ca sembrava risolvere il problema:

sudo update-ca-certificates

Come nota a margine, ad un certo punto ho aggiornato ca-certs da curl.haxx.se che non ha risolto il problema ma potrebbe essere stato correlato. ( sudo wget http://curl.haxx.se/ca/cacert.pemcorri da /etc/ssl/certs).


Link 404 per me. Questo funziona: curl.haxx.se/ca/cacert.pem
dave1010,

2
Hmm. Sembra complicato recuperare un file contenente certificati come quello non su HTTPS.
Matthew Schinckel,

5

In genere, il software che non ha un'implementazione univoca e viene compilato con OpenSSL farà riferimento a ca-bundle.crt a livello di sistema in cui si trova spesso /usr/share/ssl/certs.

La posizione potrebbe essere diversa in Ubuntu ma il pacchetto OpenSSL dovrebbe includere il file ca-bundle.

CURL ha una varietà di opzioni per specificare come verificare i certificati.

  • La CURL_CA_BUNDLEvariabile di ambiente per l'ubicazione del file ca-bundle.
  • --capathconsente di specificare la directory in cui si trovano i certificati CA. (Sostituisce CURL_CA_BUNDLE)
  • --cacert consente di specificare il file del certificato CA.

Sul mio server CentOS, posso eseguire quanto segue per identificare il percorso ca-bundle utilizzato da CURL:

$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt

1
Open SSL è installato. Ho un file "ca-certificati.crt" in / etc / ssl / certs / che sembra un insieme di certificati concatenati insieme, ma immagino che CURL non lo stia vedendo? CURL ha un'impostazione di configurazione per il pacchetto CA?
Nick,

Sei sicuro che non sia il tipo di certificato che sta tentando di verificare? Le tecnologie di certificazione più recenti come i certificati di verifica estesa richiedono spesso aggiornamenti di ca-bundle, poiché i certificati di root sono relativamente nuovi. Dai un'occhiata anche alla mia prossima modifica.
Warner,

curl-config non sembra essere un comando valido su Ubuntu. Come posso impostare CURL_CA_BUNDLE?
Nick,

Sembra che faccia parte del libcurl3-openssl-devpacchetto basato su una rapida ricerca su Internet. CURL_CA_BUNDLEè solo una variabile d'ambiente. In bash, CURL_CA_BUNDLE=/path/to/file.
Warner,

Bene, il pacchetto è installato, ma "curl-config --ca" produce una linea vuota. Ho provato a impostare la variabile usando 'CURL_CA_BUNDLE = "/ etc / ssl / certs / ca-certificati.crt"'. Ma "curl-config --ca" produce ancora una riga vuota in seguito.
Nick,
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.