l'installazione del bundle non riesce con errore di verifica del certificato SSL


264

Quando corro bundle installper il mio progetto Rails 3 su Centos 5.5, fallisce con un errore:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem)
An error occured while installing multi_json (1.3.2), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling.

Quando provo ad installare manualmente la gemma (da gem install multi_json -v '1.3.2') funziona. Lo stesso problema si verifica con molte altre gemme. Uso RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

Come sistemarlo?


Di fronte allo stesso problema. Ma con un altro gioiello: Gem :: RemoteFetcher :: FetchError: SSL_connect restituito = 1 errno = 0 stato = SSLv3 leggere il certificato del server B: verifica del certificato fallita ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish,

4
Sto riscontrando lo stesso errore con le stesse circostanze. Ho il sospetto, date queste altre risposte, che si tratti di un problema sul lato server.
Asfallows

Ho source "https://rubygems.org''riscontrato un problema simile in Rails 5. Risolto il problema aggiungendo il Gemfile ed eseguendo "gem update --system". Puoi trovare maggiori informazioni qui .
Nesha Zoric,

Nesha, quella correzione ha funzionato per me. Grazie!
Martin Marino,

Risposte:


310

Aggiornare

Ora che ho karma che ... abbastanza estratto da questa risposta, tutti dovrebbero sapere che questo avrebbe dovuto essere risolto.

ri: tramite Ownatik di nuovo l' installazione del bundle non riesce con errore di verifica del certificato SSL

gem update --system

La mia risposta è ancora corretta e lasciata qui sotto come riferimento se ciò non funziona per te.


Onestamente la migliore soluzione temporanea è

[...] usa la versione non ssl di rubygem nel tuo file gemma come soluzione temporanea.

tramite l'utente Ownatik

ciò che significano è nella parte superiore della Gemfilemodifica della directory dell'applicazione in rails

source 'https://rubygems.org'

per

source 'http://rubygems.org'

si noti che la seconda versione è http anziché http s


1
Sto accettando questa risposta, perché quella è stata la cosa che ho fatto all'inizio. Successivamente ho modificato la mia strategia di distribuzione. Ora eseguo il bundle dell'applicazione su un altro server e quindi lo copio (con gemme nella vendordirectory) sul server di cui ho scritto nella domanda.
mrzasa,

6
Questo non ha funzionato per me. Il link fornito da @fbernier di seguito l'ha risolto per me.
Scott Fister,

5
Questo non funziona L'esecuzione di questo fornisce solo l'output di Latest version currently installed. Aborting. altre idee?
Matt Huggins,

1
In termini di modifica della fonte, per le persone più nuove come me. Vorrei specificare che questo file si trova nella directory dell'applicazione. Lo stavo cercando nella directory di railsinstaller. Comunque, ho cambiato la fonte e alla fine ha funzionato. Ricevo errori di certificato quando provo a eseguire l'aggiornamento :(
Brian

2
gem update --systemfallisce con lo stesso errore del certificato esatto: \
BlueRaja - Danny Pflughoeft il

226

Sostituisci l'origine gemma ssl con non ssl come soluzione temporanea:


8
OMG ha funzionato come un fascino! Sono su Windows 7 x64 dietro un proxy aziendale. Molte grazie!
banerban Ghiță,

14
Sono sorpreso che questo non sia stato classificato più in alto, questa è stata la soluzione rapida più semplice.
hwatkins,

3
buona soluzione temporanea ... tenere presente quanto segue: RubyGems è stato configurato per servire gemme attraverso i seguenti URL attraverso la sua storia: * gems.rubyforge.org (RubyGems 1.3.6 e precedenti) * rubygems.org (RubyGems 1.3. 7 fino a 1.8.25) * rubygems.org (RubyGems 2.0.1 e
versioni

1
la soluzione più veloce per me su Windows 8
Tisch

3
Imho questo non dovrebbe nemmeno essere considerato una risposta valida, perché apre il tuo sistema agli attacchi dall'esterno.
rubiii

160

Il motivo sono i vecchi rubygem. È necessario aggiornare prima la parte del sistema utilizzando l'origine non ssl:

gem update --system --source http://rubygems.org/ (aggiornamento temporaneo della parte del sistema utilizzando una connessione non SSL).

Ora sei pronto per l'uso gem update.


5
Soluzione davvero semplice che è multipiattaforma e consente a RubyGems di occuparsi dei dettagli. Bello.
zrisher,

2
questo era quello che dovrebbe essere accettato, le risposte sopra non spiegano che è necessario rimuovere prima le fonti ssl
Ephraim,

1
Grazie - questo è il biglietto. Se ricevi un messaggio "non in cache" quando aggiungi o rimuovi fonti, provalo con o senza barra. Deve corrispondere esattamente.
Timothy Lee Russell,

1
Ho cercato in molte soluzioni. Questo è quello che ha funzionato come un fascino. Grazie! Questa dovrebbe essere scelta come la vera soluzione.
Berker Yüceer,

1
Grazie!! Concordo con gli altri sul fatto che questa dovrebbe essere la risposta accettata, in quanto non comporta il recupero di gemme tramite HTTP semplice.
Alexander,

117

Se sei su un Mac e usi una versione recente di RVM (~ 1.20), il seguente comando ha funzionato per me.

rvm osx-ssl-certs update

Grazie! Ha funzionato per me su Mac OSX 10.8.5
Matthew Blancarte,

Grazie, ha funzionato anche per me. Stavo cercando di installare CocoaPods. rvm 1.22.15, OS X 10.8.5
Logan Moseley,

1
Questo è indicato anche nel messaggio di errore "... vedi bit.ly/ruby-ssl".
IAmNaN

Thankssssss !! Ha funzionato per me !! \ o /
Valter Júnior

55

Questo problema dovrebbe ora essere risolto. Aggiorna rubygems ( gem update --system), assicurati che openssl sia all'ultima versione sul tuo sistema operativo o prova questi suggerimenti che non funzionano ancora: http://railsapps.github.com/openssl-certificate-verify-failed.html


1
Necessario aggiornare anche il bundler per farlo funzionare (rubygems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e funziona per me su winxp).
fakeleft

Ho dovuto aggiornare da 1.3.0, ora sono su 1.3.4 e https non sta più lanciando l'errore: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: in `connect ': SSL_connect restituito = 1 errno = 0 stato = SSLv3 lettura dello scambio di chiavi del server B: ecpoint errato (OpenSSL :: SSL :: SSLError)
Jon Kern

3
Non è possibile aggiornare rubygems se il certificato SSL non è accettato! Correre in cerchio qui;)
kap

50

Soluzione temporanea (come indicato da Ownatik):

Crea o modifica un file chiamato .gemrc nel percorso principale, inclusa la linea :ssl_verify_mode: 0

Ciò impedirà al bundler di controllare i certificati SSL delle gemme quando tenta di installarli.

Per i dispositivi * nix, significa "percorso principale" ~/.gemrc. Puoi anche creare /etc/gemrcse preferisci. Per Windows XP, significa "percorso principale" c:\Documents and Settings\All Users\Application Data\gemrc. Per Windows 7,C:\ProgramData\gemrc


3
%USERPROFILE%\.gemrcviene cercato anche gemsu Windows.
Rômulo Ceccon,

1
Percorso file raccomandato per Windows 8?
user1318135,

6
La rimozione della verifica SSL è una soluzione temporanea che apre una falla di sicurezza. Maggiori informazioni qui: github.com/rubygems/rubygems/commit/…
mrm

Questo è utile nel mio caso; dietro un firewall aziendale che limita tutti i file compressi ma li consente tramite https.
mydoghasworms

Non ho provato questa soluzione, ma nel mio caso ha funzionato anche quando ho aggiunto questo contenuto a ~/.gemrc::sources: - http://rubygems.org
Artur Käpp

18

Su Windows 7 è possibile scaricare il file cacert.pem da qui e impostare SSL_CERT_FILE sull'ambiente nel percorso in cui è archiviato il certificato, ad es.

SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"

oppure puoi impostare la variabile nel tuo script in questo modo ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

Sostituisci <username> con il tuo nome utente.


3
Grazie. La correzione permanente è qui. guide.rubygems.org/ssl-certificate-update
Maheshkumar,

Questa è la giusta soluzione permanente ed evita di usare una fonte http non protetta.
Dio Phung,

15

La vera soluzione a questo problema, se si utilizza RVM:

  1. Aggiorna rubygems: gem update --system
  2. Usa RVM per aggiornare certificati SSL: rvm osx-ssl-certs update all

Punta a questo suggerimento sul progetto RailsApps !


1
rvm osx-ssl-certs update allha funzionato bene per me. Non è stato necessario eseguire il passaggio 1.
DMH,


7

Per quelli di voi che hanno installato Ruby tramite RVM e desiderano una soluzione rapida (preferendo non leggere per richiesta di Bruno), provate questo:

rvm remove 1.9.x (or whatever version of ruby you are using)
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr

Per maggiori dettagli, ecco il link dove ho trovato la soluzione.

http://railsapps.github.com/openssl-certificate-verify-failed.html

A proposito, non ho dovuto toccare i miei certificati su Ubuntu.

Soprattutto, questa non è una soluzione alternativa. Scaricherà le gemme tramite SSL e fallirà se c'è un problema come un uomo nel mezzo dell'attacco che è molto meglio della semplice disattivazione della sicurezza.


La pagina a cui ci si collega ha una "soluzione alternativa" (prima) e quindi le soluzioni appropriate. Sarebbe meglio se la tua risposta lo affermasse un po 'più chiaramente. Tuttavia, l'utilizzo dei certificati CA (tramite cacert.pemo $rvm_path/usr/ssl) è effettivamente la strada giusta da percorrere.
Bruno,

1
Bruno, la soluzione sarà probabilmente un po 'diversa a seconda del sapore di Unix che la persona usa. Sembra che sarà necessario leggere il link.
danielrussia,

Stavo solo parlando della differenza tra la "soluzione alternativa" sulla pagina ( :ssl_verify_mode: 0, che apre i problemi), al contrario di una delle 3 soluzioni sottostanti, che sono il modo giusto per risolvere questo problema.
Bruno,

@Bruno, ho rivisto il mio articolo, per favore aggiungi commenti o modifica il wiki se vedi possibilità di miglioramenti.
Daniel Kehoe,

6

Questo è stato risolto

http://guides.rubygems.org/ssl-certificate-update/

Ora che RubyGems 2.6.x è stato rilasciato, è possibile aggiornare manualmente a questa versione.

Scarica https://rubygems.org/downloads/rubygems-update-2.6.7.gem

Si prega di scaricare il file in una directory a cui è possibile fare riferimento in seguito (ad es. La radice del disco rigido C :)

Ora, usando il tuo Prompt dei comandi:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

Dopo questo, gem --version dovrebbe riportare la nuova versione di aggiornamento.

Ora puoi disinstallare in sicurezza rubygems-update gem:

C:\>gem uninstall rubygems-update -x

5

Semplice istruzione di copia incolla fornita qui sul file .pem

https://gist.github.com/luislavena/f064211759ee0f806c88

Per la verifica del certificato non riuscita

Se hai letto le sezioni precedenti, saprai cosa significa (e vergogna> se non l'hai fatto).

Dobbiamo scaricare AddTrustExternalCARoot-2048.pem . Apri un prompt dei comandi e digita:

C:> gemma che rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Ora, localizziamo quella directory. Dalla stessa finestra, inserisci la parte del percorso fino all'estensione del file, ma usando invece le barre rovesciate:

C:> avvia C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Questo aprirà una finestra Explorer all'interno della directory che abbiamo indicato.

Passaggio 3: copia il nuovo certificato di fiducia

Ora, individua la directory ssl_certs e copia il file .pem ottenuto dal passaggio precedente all'interno.

Verrà elencato con altri file come GeoTrustGlobalCA.pem.


4

stesso problema ma con gemma diversa qui:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/builder-3.0.0.gem)
An error occured while installing builder (3.0.0), and Bundler cannot continue.
Make sure that `gem install builder -v '3.0.0'` succeeds before bundling.

soluzione temporanea: gem install builder -v '3.0.0'consente di continuarebundle install


7
Puoi anche usare la versione non ssl di rubygem nel tuo file gemma come soluzione temporanea.
Fbernier,

1
L'ho fatto e funziona. Per ora, questa è una soluzione sufficiente.
mrzasa,

Ho lo stesso problema qui. Quindi @Ownatik come usare la versione ssl di rubygems?
Zeck,

4

La soluzione più semplice:

rvm pkg install openssl
rvm reinstall all --force

Ecco!


2
Cosa fa effettivamente questo al mio sistema?
Bradley Flood


4

La mia correzione permanente per Windows:

  1. Scarica CACert , salva C:\ruby\ssl_certs\GlobalSignRootCA.pemda http://guides.rubygems.org/ssl-certificate-update/

  2. Creare una variabile di sistema denominata " SSL_CERT_FILE ", impostata su C:\ruby\ssl_certs\GlobalSignRootCA.pem.

  3. Riprova gem install bundler::

C:\gem sources
*** CURRENT SOURCES ***
https://rubygems.org/

C:\gem install bundler
Fetching: bundler-1.13.5.gem (100%)
Successfully installed bundler-1.13.5
1 gem installed

3

Ricevo un errore leggermente diverso, anche se forse correlato, su Ubuntu 12.04:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem)
An error occured while installing activesupport (3.2.3), and Bundler cannot continue.
Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling.

Succede quando corro bundle installcon source 'https://rubygems.org'un Gemfile.

Questo è un problema con OpenSSL su Ubuntu 12.04. Vedi il numero # 319 di Rubygems .

Per risolvere questo problema, esegui apt-get update && apt-get upgradeUbuntu 12.04 per aggiornare OpenSSL.


3

Sono stato in grado di rintracciarlo fino al fatto che i binari quello rvm download non funzionano bene con OpenSSL di OS X, che è vecchio e non viene più utilizzato dal sistema operativo.

La soluzione per me era forzare la compilazione durante l'installazione di Ruby tramite rvm:

rvm reinstall --disable-binary 2.2

Questo ha funzionato per me. Devi sostituire "2.2" con la versione ruby ​​che stai utilizzando
Josh

3

Grazie a @ Alexander.Iljushkin per:

gem update --system --source http://rubygems.org/

Dopo che il bundler continuava a fallire e la soluzione era:

gem install bundler


2

Stavo ricevendo un errore simile. Ecco come ho risolto questo problema: nella directory del tuo percorso, cerca Gemfile. Modifica la fonte nel file gemm su http anziché su https e salvala. Ciò potrebbe installare il bundler senza il certificato SSL issue.l


2

Per macchine Windows, controlla la tua versione gemma con

gem --version

Quindi aggiorna la tua gemma come segue:

Si prega di scaricare il file in una directory che è possibile puntare in seguito (ad es. La radice del disco rigido C :)

Ora, usando il tuo Prompt dei comandi:

C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc

Ora, l'installazione del bundle avrà esito positivo senza errori di verifica del certificato SSL.

Istruzioni più dettagliate sono qui


1

Questo ha funzionato per me:

  • scarica l'ultima gemma su https://rubygems.org/pages/download
  • installa la gemma con gem install --local [path to downloaded gem file]
  • aggiorna le gemme con update_rubygems
  • controlla di essere sulla versione gemma più recente con gem --version

1

Ho dovuto reinstallare openssl:

brew uninstall --force openssl
brew install openssl

1

Di recente ho affrontato questo problema e ho seguito i passaggi indicati qui . È possibile che non si stia puntando al giusto certificato OpenSSL. Dopo l'esecuzione:

rvm osx-ssl-certs status all
rvm osx-ssl-certs update all

e

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

il pacchetto completo è corso!


1

Scarica rubygems-update-2.6.7.gem .

Ora, usando il tuo Prompt dei comandi:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

Dopo questo, gem --versiondovrebbe segnalare la nuova versione di aggiornamento.

Ora puoi disinstallare in sicurezza rubygems-update gem:

C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7

1

Da notare, se stai afferrando gemme da una fonte di cui la certificazione SSL è considerata attendibile da un'autorità di certificazione interna (o ti stai collegando a una fonte esterna attraverso un proxy web aziendale con ispezione SSL), punta la tua variabile env SSL_CERT_FILE sulla tua catena di certificati . Ciò molto probabilmente richiede solo l'esportazione del certificato di root dall'archivio certificati (Portachiavi di sistema su macOS) in una posizione accessibile dalla shell, ad esempio:

export SSL_CERT_FILE=~/RootCert.pem

0

Se stai usando rails-assets

Se stavi usando https://rails-assets.org/per gestire le tue risorse, nessuna risposta ti aiuterà. Anche la conversione in httpnon aiuta.

La correzione più semplice sta usando questa fonte, invece, http://insecure.rails-assets.org. Questo è stato menzionato nella loro homepage .


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.