Errore del certificato Curl quando si utilizza RVM per installare Ruby 1.9.2


90

RVM sta riscontrando un errore di certificato durante il tentativo di scaricare Ruby 1.9.2. Sembra che curlstia avendo un problema con il certificato ma non sono sicuro di come aggirarlo. Ho incluso le informazioni esatte sull'errore di seguito.

$ rvm install 1.9.2
Installing Ruby from source to: /Users/willdennis/.rvm/rubies/ruby-1.9.2-p180, this may take a while depending on your cpu(s)...

ruby-1.9.2-p180 - #fetching 
ERROR: Error running 'bunzip2 '/Users/willdennis/.rvm/archives/ruby-1.9.2-p180.tar.bz2'', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/extract.log
ruby-1.9.2-p180 - #extracting ruby-1.9.2-p180 to /Users/willdennis/.rvm/src/ruby-1.9.2-p180
ruby-1.9.2-p180 - #extracted to /Users/willdennis/.rvm/src/ruby-1.9.2-p180
Fetching yaml-0.1.3.tar.gz to /Users/willdennis/.rvm/archives

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /Users/willdennis/.rvm/log/ruby-1.9.2-p180/*.log. Next we'll try to fetch via http.
Trying http:// URL instead.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /Users/willdennis/.rvm/log/ruby-1.9.2-p180/*.log
Extracting yaml-0.1.3.tar.gz to /Users/willdennis/.rvm/src
ERROR: Error running 'tar zxf /Users/willdennis/.rvm/archives/yaml-0.1.3.tar.gz -C /Users/willdennis/.rvm/src --no-same-owner', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/extract.log
/Users/willdennis/.rvm/scripts/functions/packages: line 55: cd: /Users/willdennis/.rvm/src/yaml-0.1.3: No such file or directory
Configuring yaml in /Users/willdennis/.rvm/src/yaml-0.1.3.
ERROR: Error running ' ./configure --prefix="/Users/willdennis/.rvm/usr"  ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/configure.log
Compiling yaml in /Users/willdennis/.rvm/src/yaml-0.1.3.
ERROR: Error running '/usr/bin/make ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/make.log
Installing yaml to /Users/willdennis/.rvm/usr
ERROR: Error running '/usr/bin/make install', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/make.install.log
ruby-1.9.2-p180 - #configuring 
ERROR: Error running ' ./configure --prefix=/Users/willdennis/.rvm/rubies/ruby-1.9.2-p180 --enable-shared --disable-install-doc --with-libyaml-dir=/Users/willdennis/.rvm/usr ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/configure.log
ERROR: There has been an error while running configure. Halting the installation.

Come posso risolvere o evitare questo errore?


avevi installato tutte le dipendenze precedenti per poter compilare quella versione di Ruby?
eveevans

L'intero problema e la soluzione suggerita sono indicati nel messaggio di errore molto lungo. Non credo che ripetere quel testo in una risposta qui aiuterà molto. Inizia leggendo gli URL menzionati.
Daniel Stenberg

2
@daniel Tranne che il modo normale per fare in modo che curl smetta di lamentarsi di un certificato SSL non valido, -k, non può essere usato qui, perché curl è guidato da rvm. BTW, dovresti riflettere attentamente se vuoi davvero consentire a curl di ignorare i certificati SSL non validi. Una cosa si può provare è quello di dare ricciolo un recente CA fascio . La risposta di @ Dorothy di seguito dovrebbe funzionare.
Dan Barowy

@ Dan: quindi leggi di nuovo il messaggio di errore. Non suggerisce particolarmente di ignorare i certificati difettosi (ho scritto quel messaggio di errore), spiega chiaramente cosa puoi fare e fornisce un URL con una descrizione completa che include i dettagli su come ottenere certificati CA aggiornati.
Daniel Stenberg

1
@daniel: il punto è che il messaggio di errore è per curl, non rvm! Puoi leggere la soluzione suggerita da curl quanto vuoi, ma se non puoi modificare l'invocazione di curl di rvm, sei bloccato. Io stesso ho provato ad aggiornare il bundle SSL di curl (impostando CURL_CA_BUNDLE) e non ha funzionato - in realtà c'è qualcosa di sbagliato nel certificato SSL remoto che ospita il tarball yaml, non solo un bundle CA curl obsoleto. Dire ad un utente di RTFM va bene se leggere l'output davvero non risolvere il problema, ma che è non è il caso qui. Di nuovo, vedere la risposta di seguito che risolve effettivamente il problema.
Dan Barowy

Risposte:


125

Nel caso in cui qualcun altro si imbatta in questo durante il tentativo di aggiornamento alla 1.9.3 (anche se la versione probabilmente non ha importanza), controlla la versione di rvm che hai. Wayne sembra essere passato da rvm.beginrescueend.com a rvm.io. Il certificato di sicurezza del vecchio sito è scaduto, quindi la risposta di curl è corretta.

L'aggiornamento di rvm dal nuovo sito ha risolto questo problema e mi ha permesso di andare avanti.

$ \curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled

Aggiornamento : come menzionato da @rodgerdpack, il comando cambia e ho aggiornato quanto sopra. In generale, vedere https://rvm.io/ per le ultime novità.


1
Vorrei aver visto prima questa risposta. L'installazione della 1.9.3 su Mac OS X con RVM non funzionava, anche con le soluzioni proposte sopra. Tuttavia, l'aggiornamento di RVM ha funzionato.
chris_radcliff

Questo è ciò che ha fatto anche per me (aggiornamento da 1.9.2 a 1.9.3) grazie @jwadsack
Anna Billstrom

in questi giorni l'esecuzione del comando che hai menzionato dà un messaggio che dice "stai eseguendo un pacchetto ubuntu vecchio e rotto, vedi stackoverflow.com/questions/9056008/… per come risolverlo"
rogerdpack

40

Se non si desidera modificare lo script E non si desidera aggiungere un certificato "per sempre" al pacchetto di certificati. C'è una soluzione molto carina e veloce:

#to download the cert
wget http://curl.haxx.se/ca/cacert.pem
#to let curl use it for the next calls
export CURL_CA_BUNDLE=~/cacert.pem

Quindi esegui lo script. Per reimpostare la variabile di ambiente (per le successive chiamate di script che non dovrebbero utilizzare questo certificato) eseguire nuovamente l'accesso al sistema o annullare l'impostazione della variabile di ambiente:

export CURL_CA_BUNDLE=

Questo ha risolto un problema con yaml, ma ho problemi separati con qualche altra parte della complicazione.
Emerson

4
Ora posso ottenere rvm da installare su CentOS. Grazie mille
channa ly

Non fa nulla su OSX Lion w / rvm 1.8.3.
Mark Richman

Funziona bene su Centos5.4. Grazie.
Yejun Su

Funziona a meraviglia su OSX Mountain Lion per ottenere ruby ​​2.0.0.
Arkan

21

Curl viene invocato in .rvm / scripts / fetch, che per impostazione predefinita sarà nella directory home.

Modificalo utilizzando il tuo editor di testo preferito: ad esempio,

 nano ~/.rvm/scripts/fetch

Nelle righe 56 e 58 (possono variare con altre versioni di RVM, ovviamente) vedrai due righe che iniziano

 fetch_command="curl ...

Aggiungi semplicemente -k dopo curl, salva e riprova.


9
Non ha funzionato per me, ma ho seguito la tua idea e ho scoperto questa alternativa: Crea un file ".curlrc" nella tua cartella home ('~ / .curlrc'). Aprilo in qualsiasi editor e digita "insicuro" nel file. Salva il file e spera per il meglio.
Julian Weimer

8
RVM non includerà mai quel cambiamento, sconsigliamo di farlo in questo modo, se hai bisogno di usare insicuro (-k) chiama echo insecure >> ~/.curlrco, ancora meglio, aggiorna i certificati seguendo le istruzioni
@dbikard

ha lavorato su debian squeeze. Anche i post più vecchi possono far risparmiare molto tempo;) grazie!
23 luglio

@mpapis Sono totalmente d'accordo, ma un errore che spiega ad esempio la soluzione di user620965 negli errori di installazione RVM sarebbe fantastico
Houen

3
Ciò è molto probabilmente a causa della modifica dell'URL in rvm.io menzionata nel post di seguito ed è il modo corretto per affrontarlo. Non è necessario ignorare i certificati SSL o il comportamento di curl. Basta aggiornare rvm dall'URL corretto immettendo $ curl -L get.rvm.io | bash -s stabile come mostrato di seguito
cclark

20

È necessario scaricare il certificato CA da http://curl.haxx.se/ca/cacert.pem e aggiungerlo al file curl-ca-bundle-new.crt.

Per trovare la posizione di questo file utilizzare:

   $ curl-config --ca

   /usr/share/curl/curl-ca-bundle.crt

Esegui il backup del tuo file curl-ca-bundle.crt:

$ cp /usr/share/curl/curl-ca-bundle.crt /usr/share/curl/curl-ca-bundle.crt.old

Quindi vuoi concatenare i due file usando:

$ cat cacert.pem /usr/share/curl/curl-ca-bundle.crt >> curl-ca-bundle-new.crt

Grazie, mi hai risparmiato un po 'di tempo!
Tadas T

Questo (mi avrebbe) risparmiato ORE su OpenIndiana 151. Se potessi votare più di una volta lo farei.
Andrew Burns

Questo ha funzionato per me su CentOS 5.8; I certificati si trovano in / etc / pki / certs / per coloro che devono trovarli su CentOS!
geedew

E cosa fai con il risultante curl-ca-bundle-new.crt?
Valerio Schiavoni

Il nuovo file del certificato dovrebbe essere presente nella directory trovata utilizzando "curl-config --ca".
Anirudh

17

Forse tutte queste soluzioni complicate erano necessarie una volta, ma ora tutto ciò che devi fare è prima aggiornare RVM e il tuo problema sarà risolto:

$ rvm get stable
$ rvm reload
$ rvm install ruby-1.9.3-p194

2
Sfortunatamente, se la tua versione di RVM è abbastanza vecchia, "rvm get head" non funziona nemmeno. La risposta di @ jwadsack spiega perché.
Alex D

sì è vero. Inoltre, guardando indietro alla mia risposta, "rvm get head" non è nemmeno il miglior consiglio. Dovrebbe essere "rvm get stable". Modificherò la mia risposta per riflettere questo.
Nick Messick

14

Se non ti dispiace disabilitare il controllo del certificato in curl (io no):

echo insecure > ~/.curlrc

11

Su Centos 5.6 (finale) ho avuto un problema con l'installazione di rvm 1.9.2 L'errore era:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /usr/local/rvm/log/ruby-1.9.2-p290/*.log. Next we'll try to fetch via http.
Trying http:// URL instead.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /usr/local/rvm/log/ruby-1.9.2-p290/*.log
ERROR: There has been an error while trying to fetch the source.  
Halting the installation.
ERROR: There has been an error fetching the ruby interpreter. Halting the installation.

Ecco un elenco di azioni che mi hanno aiutato a risolvere il problema

$ curl-config --ca # show path to the certificate
/usr/local/share/curl/curl-ca-bundle.crt
$ cd /usr/local/share/curl/ # go to that path
$ cp curl-ca-bundle.crt curl-ca-bundle.crt.bak # backup certificate
$ curl http://curl.haxx.se/ca/cacert.pem -o curl-ca-bundle.crt # download new
$ rvm install 1.9.2 # bingo it works

Btw curl version è curl 7.18.0 (per controllare '$ curl -V')


1
Buona soluzione, nel mio caso ho riscontrato questo errore durante l'esecuzione di "rvm get head". E fai attenzione in Linux con il nome del file curl-ca-bundle.crt! è diverso
Albert Català

3

Stavo tentando di installare ruby-1.9.2-p290e ho riscontrato lo stesso problema. Dopo aver eseguito which curle realizzato che l'istanza curl proveniva da un'installazione di MAMP sul mio sistema (OS X Snow Leopard), ho riconfigurato la mia PATHvariabile per utilizzare l'impostazione predefinita del sistema in /usr/bin/curl. Utilizzando questa versione, non curl 7.19.7ho avuto problemi a installare l'ultima versione di Ruby con RVM.


2

Ho avuto problemi con l'installazione della 1.9.2 utilizzando RVM, ecco la mia soluzione:

Ho ancora ricevuto l'errore file not found ma l'installazione è andata a buon fine

[2011-07-05 14:24:07] tar zxf /Users//.rvm/archives/yaml-0.1.3.tar.gz -C /Users//.rvm/src --no-stesso proprietario tar (figlio): /Users//.rvm/archives/yaml-0.1.3.tar.gz: Impossibile aprire: nessun file o directory tar (figlio): errore non recuperabile: uscita ora tar: figlio restituito stato 2 tar : Uscita errore ritardata da errori precedenti


1
Ho fatto qualcosa di simile e ho funzionato bene:wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz; cp yaml-0.1.4.tar.gz /Users/yourname/.rvm/archives; rvm install default
Wei

Solo questa soluzione ha funzionato per me su Mac Osx Lion. Molte grazie!
Christian Treppo

1

Grazie Dorothy - questa ricetta ha funzionato per me con le seguenti piccole modifiche per un ambiente Win7:

Per altri con questo problema -

  1. Apprezzo la discussione sull'aggiornamento di CA_Bundle - Buono da fare ma non ha aiutato con questo problema: il certificato del sito Web pyyaml ​​causerà comunque CURL a generare un errore e poiché CURL viene avviato all'interno del programma di installazione, non è possibile aggiungere un'opzione -k .

  2. Ruby 1.9.2-p290 sta tentando di installare YAML 0.1.4 in modo che Google for a mirror e scarichi quella versione - YAML-0.1.3 non avrà alcun effetto nel bypassare i problemi.

  3. È necessario eseguire l'equivalente per Windows di CHMOD 777 - all'interno della cartella rvm / src per i file estratti. Modificare la sicurezza in modo che tutti abbiano la proprietà / tutti i privilegi e disattivare l'attributo di sola lettura per tutti i file e le cartelle.

Il programma di installazione continuerà a generare errori quando tenta di scaricare (errore CURL), ma riprenderà tentando di estrarre. L'estrazione genererà errori perché il tarball è già estratto nella cartella src. Il passaggio successivo della configurazione di YAML dovrebbe funzionare senza errori se le autorizzazioni nel passaggio 3 sono state impostate correttamente e l'installazione dovrebbe essere completata senza ulteriori problemi. (Se si installa tramite cygwin / bash, sarà necessario aggiungere un compilatore C come "gcc" e aggiungere "ncurses" (comando tput) e "make" alle opzioni di configurazione di base di cygwin predefinite.)


0
$ sudo apt-get install curl

$ curl -L https://get.rvm.io | bash -s stable --ruby   with ruby

$ curl -L https://get.rvm.io | bash -s stable --rails   with rails
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.