installazione bundle non riesce con errore di verifica del certificato SSL

Quando bundle install per 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 la gem manualmente (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?

Aggiornare

Ora che ho il karma abbastanza minato da questa risposta, tutti dovrebbero sapere che questo dovrebbe essere stato corretto.

ri: tramite Ownatik di nuovo l’ installazione di bundle fallisce con l’errore di verifica del certificato SSL

 gem update --system 

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


Onestamente la migliore soluzione temporanea è quella di

[…] usa la versione non-ssl dei rubygems nel tuo gemfile come soluzione temporanea.

tramite utente Ownatik

ciò che intendono è nella parte superiore del Gemfile nella modifica della directory dell’applicazione Rails

source 'https://rubygems.org'

a

source 'http://rubygems.org'

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

Sostituisci l’origine gem di ssl con non-ssl come soluzione temporanea:

Il motivo sono vecchi rubygems. È necessario aggiornare la parte di sistema utilizzando prima la fonte non ssl:

gem update --system --source http://rubygems.org/ (aggiorna temporaneamente la parte del sistema usando la connessione non-ssl).

Ora sei pronto per usare l’ gem update .

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 

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

Soluzione temporanea (come accennato da Ownatik):

Creare o modificare un file chiamato .gemrc nel percorso di casa, inclusa la riga :ssl_verify_mode: 0

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

Per i dispositivi * nix, ‘percorso casa’ indica ~/.gemrc . Puoi anche creare /etc/gemrc se preferisci. Per Windows XP, “percorso home” indica c:\Documents and Settings\All Users\Application Data\gemrc . Per Windows 7, C:\ProgramData\gemrc

Su windows7 puoi scaricare il file cacert.pem da qui e impostare la variabile di ambiente SSL_CERT_FILE nel percorso in cui memorizzi il certificato, ad es.

 SET SSL_CERT_FILE="C:\users\\cacert.pem" 

oppure puoi impostare la variabile nel tuo script come questa ENV['SSL_CERT_FILE']="C:/users//cacert.pem"

Sostituisci con il tuo nome utente.

La vera soluzione a questo problema, se stai usando RVM:

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

Punta questo suggerimento sul progetto RailsApps !

Per quelli di voi che hanno ruby ​​installato tramite RVM e vogliono una soluzione rapida (preferendo non leggere per ogni 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 in cui ho trovato la soluzione.

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

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

Meglio di tutto, questa non è una soluzione alternativa. Scaricherà le gemme tramite SSL e fallirà se ci fosse un problema come un uomo nell’attacco centrale, che è molto meglio che spegnere la sicurezza.

Questo è stato risolto

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

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

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

Si prega di scaricare il file in una directory che può essere successivamente indicata (ad esempio la radice del proprio hard disk 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 ansible disinstallare tranquillamente rubygems-update gem:

 C:\>gem uninstall rubygems-update -x 

È ansible scaricare un elenco di certificati CA dal sito Web di curl all’indirizzo http://curl.haxx.se/ca/cacert.pem

Quindi imposta la variabile d’ambiente SSL_CERT_FILE per comunicare a Ruby di usarlo. Ad esempio, in Linux:

 $ SSL_CERT_FILE=~/cacert.pem bundle install 

(Riferimento: https://gist.github.com/fnichol/867550 )

Semplice istruzione di copia incolla fornita qui sul file .pem

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

Per la verifica del certificato fallita

Se hai letto le sezioni precedenti, saprai cosa significa (e vergogna su di te se non lo hai).

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

C:> gem che rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Ora, cerchiamo di individuare quella directory. Dalla stessa finestra, inserisci la parte del percorso fino all’estensione del file, ma utilizzando invece i backslash:

C:> avvia C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Questo aprirà una finestra di 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.

Sarà elencato con altri file come GeoTrustGlobalCA.pem.

stesso problema ma con gemme diverse 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' rende ansible continuare l’ bundle install

Ecco come si ripara questo problema su Windows:

scarica il file .perm, quindi imposta SSL_CERT_FILE nel prompt dei comandi

https://gist.github.com/fnichol/867550

Ottengo 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 bundle install con l’ source 'https://rubygems.org' in un Gemfile.

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

Per risolvere questo problema, eseguire apt-get update && apt-get upgrade su Ubuntu 12.04 per aggiornare OpenSSL.

La soluzione più semplice:

 rvm pkg install openssl rvm reinstall all --force 

Ecco!

Sono stato in grado di rintracciare il fatto che i binari che i download di rvm non funzionano con OpenSSL di OS X, che è vecchio e non è 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 

La mia correzione permanente per Windows:

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

  2. Crea 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 

Grazie a @ Alexander.Iljushkin per:

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

Dopo che quel bundler non ha funzionato e la soluzione è stata:

gem install bundler

Stavo ottenendo un errore simile. Ecco come ho risolto questo problema: nella directory dei percorsi, controlla Gemfile. Modifica la sorgente nel gemfile in http invece di https e salvala. Questo potrebbe installare il bundler senza il problema con il certificato SSL.l

Per la macchina Windows, controlla la versione della gem con

 gem --version 

Quindi aggiorna la tua gem come segue:

  • Esecuzione 1.8.x: download 1.8.30
  • Esecuzione 2.0.x: download 2.0.15
  • Esecuzione 2.2.x: download 2.2.3

Si prega di scaricare il file in una directory che può essere successivamente indicata (ad esempio 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 in bundle avrà esito positivo senza l’errore di verifica del certificato SSL.

Le istruzioni più dettagliate sono qui

Questo ha funzionato per me:

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

Ho dovuto reinstallare opensl:

 brew uninstall --force openssl brew install openssl 

Recentemente mi sono trovato di fronte a questo problema e ho seguito i passi descritti qui . Potrebbe esserci la possibilità che tu non stia puntando al giusto certificato OpenSSL. Dopo aver eseguito:

 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 funzionava!

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 --version dovrebbe riportare la nuova versione di aggiornamento.

È ora ansible disinstallare tranquillamente rubygems-update gem:

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

Per notare, se stai raccogliendo gemme da un’origine che il certificato SSL è considerato affidabile da un’autorità di certificazione interna (o ti stai connettendo a un’origine esterna tramite un proxy Web aziendale con controllo SSL), punta la variabile env SSL_CERT_FILE alla catena di certificati . Molto probabilmente è sufficiente esportare il certificato di root dall’archivio certificati (portachiavi di sistema su macOS) in una posizione accessibile dalla shell, ovvero:

 export SSL_CERT_FILE=~/RootCert.pem 

Se stai usando rails-assets

Se stavi utilizzando https://rails-assets.org/ per gestire le tue risorse, nessuna risposta ti aiuterà. Anche la conversione in http non sarà di aiuto.

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

L’unica cosa che ha funzionato per me su Windows Legacy System e Ruby 1.9 è il download del file cacert da http://guides.rubygems.org/ssl-certificate-update/

E poi eseguendo il comando below prima di eseguire l’installazione di bundle

 bundle config --global ssl_ca_cert /path/to/file.pem