Errore SSL durante l'installazione di rubygems, impossibile estrarre i dati da 'https://rubygems.org/


269

Sto cercando di fare il tutorial di Michael Hartl. Quando provo ad installare le rotaie 3.2.14 nel mio gemset, ottengo il seguente problema:

$ gem install rails -v 3.2.14

ERRORE: Impossibile trovare un 'binario' gemma valida (= 3.2.14), ecco perché:

Impossibile scaricare i dati da https://rubygems.org/ - SSL_connect restituito = 1 errno = 0 stato = SSLv3 leggere il certificato del server B: verifica del certificato non riuscita ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Dopo aver cercato su Google, ho scoperto che potevo usare una fonte non SSL per rubygems quindi ho eseguito:

sudo gem sources -a http://rubygems.org

Quindi, quando ho provato a installare nuovamente le guide, ha avuto successo. Tuttavia, ho ancora riscontrato il problema sopra ma come avvertimento:

ATTENZIONE: impossibile estrarre i dati da ' https://rubygems.org/ ': SSL_connect restituito = 1 errno = 0 stato = SSLv3 leggere certificato server B: verifica certificato non riuscita ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Come posso rimuovere completamente questo avviso / errore?

Sto usando il seguente:

  • rvm 1.22.15
  • ruby 2.0.0p247 (27/06/2013 revisione 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Sembra quasi un errore di regressione. Ho notato che uno dei miei studenti ha lo stesso problema oggi su OS X. Continuo a risolvere il problema. Ci sono altre domande correlate (identiche?) Su SO dell'anno scorso.
vgoff

Questo è un bug noto nelle 2.0.*versioni obsolete ( ) di rubygems. Prova ad aggiornare all'ultima versione di rubygems: gem update --systemquindi esegui nuovamente gem install.
Aleksei Matiushkin,

Se è corretto aggiornare la versione di Ruby, aggiornala. Questo problema è stato risolto nella versione ruby ​​più recente.
Hong

Dopo aver aggiunto la fonte http, l'esecuzione ha gem sources -r https://rubygems.org/funzionato per me (per quanto riguarda la rimozione dell'avviso).
BrainSlugs83,

Ci sono troppe risposte lunghe, mentre questo può essere risolto in una sola riga su Linux / Mac: stackoverflow.com/a/56993071/5689995
laimison

Risposte:


382

Per utenti RVM e OSX

Assicurati di utilizzare l'ultima rvm:

rvm get stable

Quindi puoi fare due cose:

  1. Certificati di aggiornamento:

    rvm osx-ssl-certs update all
  2. Aggiorna rubygems:

    rvm rubygems latest

Per utenti non RVM

Trova percorso per certificato:

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

Genera certificato:

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

L'intero codice: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Per utenti non OSX

Assicurati di aggiornare il pacchetto ca-certificates. (sui vecchi sistemi potrebbe non essere disponibile - non utilizzare un vecchio sistema che non riceve più aggiornamenti di sicurezza)

Nota di Windows

Il build di Ruby Installer per Windows sono preparate da Luis Lavena e il percorso per i certificati mostrerà qualcosa come C:/Users/Luis/...check https://github.com/oneclick/rubyinstaller/issues/249 per maggiori dettagli e questa risposta https://stackoverflow.com / a / 27298259/497756 per la correzione.


C'è un altro modo per aggiornare i certificati se non si utilizza RVM?
Eduardo,

L'esecuzione ha rvm rubygems latestprovocato un errore lamentandosi dei checksum mancanti. Tuttavia, le cose hanno iniziato a funzionare anche senza quello ... a quanto pare potresti forzarlo con --verify-downloads 1se necessario. Qualche idea sul perché potrebbe essere? Ha tentato di recuperare la versionerubygems-2.1.6
Timo

rvm codifica l'md5s per i download nel suo codice, li ho appena aggiunti alla headversione e rilascerò stablepresto.
mpapis,

2
Lo eseguo su Windows e ottengo un percorso che non esiste nemmeno sul mio computer "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Neanche nessun utente si chiama Luis. Che diavolo?
Isimmons,

3
Qualche suggerimento per gli utenti Mac Mojave? Esecuzione inpermission denied: /private/etc/ssl/cert.pem
Chandrew

241

Ultimi risultati ...

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

Ancora più importante ... scarica https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Scopri dove attaccarlo

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

Quindi copia il file .pem in ../2.1.0/rubygems/ssl_certs/ e prosegui sulla tua attività.


8
Assicurati di salvare con l' .pemestensione, no .pem.txt!
Dan Dascalescu,

3
E se non funziona? Ho fatto come dice la tua risposta, ma ho ancora l'errore! 1) Ho ottenuto il file AddTrustExternalCARoot-2048.pem, 2) Ho inserito il file in C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) Corro gem install susye ottengo lo stesso erroreUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Verde

prova ad aggiornare la tua installazione di Ruby ... questa sintesi non garantisce la retrocompatibilità con la tua versione
beauXjames,

1
Alcune note sul link luis lavena che hai dato. Potresti voler installare rubygems da un file gem invece dei file zip che menziona. Non ho trovato un comando da installare da una gemma scompattata o da un file zip. Gemma qui - rubygems.org/pages/download . Il comando è -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad il

9
il link per il download non è più valido. Per quelli di voi che stanno ancora affrontando questo problema, fare riferimento alla risposta di Dheerendra per una soluzione
Llama.new

174

Per gli utenti di Windows

Vai al link http://rubygems.org/pages/download

  1. Scarica l'ultimo file zip (nel mio caso 2.4.5)
  2. Decomprimilo
  3. eseguire "ruby setup.rb" nella cartella decompressa
  4. ora esegui il comando gem install

1
Ha funzionato per me su Windows 8.1, Ruby 2.0.0. Saluti.
Yi Zeng,

7
Migliore soluzione per utenti Windows
Sorin Haidau,

1
Molto più semplice delle alternative per Windows elencate in altre risposte e ha funzionato perfettamente su Windows 7 a 64 bit. Grazie!
Gurgadurgen,

1
Questo non funziona per me. Devkit non è compatibile con l'ultima versione di ruby ​​su windows 7
roo2

2
Funziona per me su Windows 10 e Ruby 2.1.0. Grazie!
MSC

54

Se si desidera utilizzare l'origine non SSL, provare a rimuovere prima l'origine HTTPS, quindi aggiungere quella HTTP:

sudo gem sources -r https://rubygems.org
sudo gem sources -a http://rubygems.org  

AGGIORNARE:

Come afferma mpapis, questo dovrebbe essere usato solo come soluzione temporanea. Potrebbero esserci dei problemi di sicurezza se accedi a RubyGems attraverso l'origine non SSL.

Una volta che la soluzione alternativa non è più necessaria, è necessario ripristinare l'origine SSL:

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org

non votare a fondo poiché questo risolve questo problema immediato, ma lascia il tuo rubino con vecchi certificati che è ancora male
mpapis

1
Ho aggiornato la risposta per provare a chiarire che questa è solo una soluzione alternativa per il problema di root. Ho appena provato a risolvere il problema di Terin quando ha provato a utilizzare l'origine non SSL.
Eduardo,

5
Cordiali saluti, ho dovuto fare sudo gem sources -r https://rubygems.org/e sudo gem sources -r http://rubygems.org/. Notare il finale /.
Ross Rogers,

Sì, è possibile Penso che dipenda dal modo in cui la fonte è stata aggiunta in primo luogo. Voglio dire, se la fonte è stata aggiunta con il trailing /, dovrebbe anche essere rimossa con il trailing /.
Eduardo,

L'unica soluzione che ha funzionato per me per scaricare la gemma fu @ ^! #. Grazie mille!
Genarito,

16

Su Windows dovrai usare il HTTPsorgente per aggiornare e gempoi tornare a usare HTTPS.

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/

Modifica: avviso Non sono sicuro che sia sicuro . Qualcuno sa se i pacchetti di ruby ​​sono firmati? La risposta accettata sembra una soluzione migliore.


Grazie per la condivisione; la modifica temporanea di https in http ha funzionato ma avevo bisogno di cambiare direttamente il gemfile.
Noha Kareem,

2
Nel mio caso avevo bisogno di un trailing / con l'URL https.
Alwyn Schoeman,

1
Come aggiornamento a questa risposta, è una buona idea prima di iniziare gem sources -la vedere le tue fonti prima e dopo l'aggiornamento del sistema. Se l'aggiornamento non riesce, specificare un numero di versione subito dopo il --system. Vedi rubygems.org/gems/rubygems-update/versions o chiedi al collega quali gem -vrapporti.
Gary S. Weaver,

10

Per utenti Windows (e forse altri)

Rubygems.org ha una guida che spiega non solo come risolvere questo problema, ma anche il motivo per cui così tante persone lo hanno: Aggiornamento del certificato SSL Il motivo del problema è rubygems.org passato a un certificato SSL più sicuro (SHA-2 che utilizzare la crittografia a 256 bit). Lo strumento da riga di comando rubygems raggruppa il riferimento al certificato corretto. Pertanto rubygems non può essere aggiornato utilizzando una versione precedente di rubygems. Rubygems deve prima essere aggiornato manualmente.

Per prima cosa scopri quali rubygem hai:

rubygems v

A seconda che tu abbia 1.8.x, 2.0.xo 2.2.x, dovrai scaricare una gemma di aggiornamento, chiamata “rubygems-update-XYZgem”, dove XYZ è la versione che ti serve. Esecuzione 1.8.x: download: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Esecuzione 2.0.x: download: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Esecuzione 2.2.x: download: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Installa aggiornamento gem:

gem install –-local full_path_to_the_gem_file

Esegui aggiornamento gemma:

update_rubygems --no-ri --no-rdoc

Verifica che rubygems sia stato aggiornato:

rubygems v

Disinstallare aggiornamento gem:

gem uninstall rubygems-update -x

A questo punto, potresti essere a posto. Ma è possibile che non si disponga dell'ultimo file di chiave pubblica per il nuovo certificato. Per fare questo:

Scarica l'ultimo certificato (attualmente AddTrustExternalCARoot-2048.pem) da https://rubygems.org/pages/download . Tutti i certificati si trovano anche su: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Scopri dove metterlo:

gem which rubygems

Metti questo file nella directory "rubygems \ ssl_certs" in questa posizione.

Come da rubygems , i certificati vengono spostati in directory più specifiche. Pertanto, attualmente il certificato (AddTrustExternalCARoot-2048.pem) dovrebbe essere sul seguente percorsolib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

Prova a utilizzare il sito Web di origine per le gemme, ad esempio rubygems.org. Usa http invece di https. Questo metodo non prevede alcun lavoro come l'installazione di certs e tutto il resto.

Esempio -

gem install typhoeus --source http://rubygems.org

Funziona, ma c'è un avvertimento però.

La gemma è installata, ma la documentazione non è dovuta a errori di certificazione. Ecco l'errore che ricevo

Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull 
data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 
state=SSLv3 read server certificate B: certificate verify failed 
(https://rubygems.org/latest_specs.4.8.gz)

7

La corsa ha gem update --systemfunzionato per me


6
Questo ha funzionato anche per me su Windows. Ho dovuto passare temporaneamente al classico HTTP, quindi aggiornare, quindi tornare a SSL.
Tom Mayfield,

1
ERRORE. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Verde,

gemma fonti --remove rubygems.org gemma fonti -a rubygems.org gem aggiornamento --system
Stefan Steiger

4

Assicurarsi che l'orologio di sistema sia corretto

Questo errore esatto mi è successo oggi su una macchina virtuale Ubuntu in esecuzione su VirtualBox. Ho provato la maggior parte delle soluzioni sopra indicate prima di notare che avevo ripreso da uno stato sospeso molto vecchio e il mio orologio era spento da molti giorni.

L'aggiornamento dell'orologio risolve immediatamente il mio problema. Ecco il comando che ho usato nel mio caso:

sudo service ntp stop && sudo ntpdate pool.ntp.org && sudo service ntp start


4

La semplice disinstallazione e reinstallazione di openssl con homebrew ha risolto questo problema per me.

brew uninstall --force openssl

brew install openssl


1
Con le versioni più recenti di homebrew potresti dover eseguire il comando in questo modo: brew uninstall --ignore-dependencies openssl(che è l'equivalente della vecchia forcebandiera)
Batkins


3

Se stai usando Windows, apri https://rubygems.org/ con Internet Explorer.

Fare clic sulle informazioni di sicurezza e importare il certificato. La linea di fondo è che la catena di certificazione è obsoleta ed è necessario aggiungere questo nuovo certificato. Ricorda che questa non è una violazione della sicurezza finché puoi convalidare il certificato come attendibile.


Ciò non ha fatto nulla per me ... OpenSSL utilizza anche l'archivio certificati di Windows?
Julien Ruffin,

2

Nel mio caso, i certificati CA di Ubuntu non erano aggiornati. L'ho risolto eseguendo:

 sudo update-ca-certificates

2

Approccio / one-liner che può essere automatizzato per scaricare gemme utilizzando HTTP anziché HTTPS:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc

Funziona perfettamente se riscontri problemi in un contenitore docker!
user7364588

1

Il caso particolare di RubyGems (lo strumento da riga di comando) è che richiede di raggruppare all'interno del proprio codice i certificati di attendibilità, che consentono a RubyGems di stabilire una connessione con i server anche quando il sistema operativo di base non è in grado di verificarne l'identità.

Fino a pochi mesi fa, questo certificato è stato fornito da una CA, ma un certificato più recente è fornito da una CA diversa.

Per questo motivo, le installazioni esistenti di RubyGems dovrebbero essere aggiornate prima del passaggio del certificato e dare abbastanza tempo perché la modifica si diffonda (e le persone aggiornino)

Chiunque può trovare la sua soluzione seguendo i semplici passaggi indicati nel link sottostante

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


1

Provare

gem update --system

Spero che risolva il problema.


Per me va bene. Grazie. Ubuntu; Ruby è stato installato utilizzando apt install ruby.
Marslo,

ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Jonathan,

1

Scarica il file cacert.pem da http://curl.haxx.se/ca/cacert.pem . Salvare questo file in C: \ RailsInstaller \ cacert.pem.

Ora rendi ruby ​​consapevole del tuo pacchetto di autorità di certificazione impostando SSL_CERT_FILE. Per impostarlo nella sessione corrente del prompt dei comandi, digitare:

set SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem


0

Ho avuto lo stesso problema durante il tentativo di installare gemma di cetriolo. Tuttavia ho notato che gemma bundler già installata con ruby ​​2.0. Ho creato un Gemfile.rb nella cartella del progetto con le gemme richieste e ho seguito questi passaggi

  1. Passare alla cartella del progetto
  2. Digita bundle install

Tutte le gemme richieste installate.


0

Per Illumos / Solaris utilizzando OpenCSW pkgutil:

Installa i certificati CSW prima di 'gem install'

pkgutil -yi CSWcacertificates

Se stai usando un kit ruby ​​che non proviene da OpenCSW, la tua versione ruby ​​potrebbe aspettarti di trovare il file del certificato in un altro posto. In questo caso, ho semplicemente collegato il link /etc/opt/csw/ssl/cert.pem di OpenCSW al punto previsto.

Controlla dove ruby ​​si aspetta di trovarlo:

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

Quindi, se c'è una discrepanza, collegalo:

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf


0

Per utente Windows:

Dopo aver installato Ruby 2.2.3 (+ rubygems 2.5.1) su una macchina di prova con accesso a Internet, ho riscontrato questo errore SSL quando ho installato il bundler su una macchina di produzione, all'interno della rete.

Poiché avevo limitazioni di accesso alla rete e non c'era modo di modificare le impostazioni per l'accesso SSL e in base ai messaggi di errore, ho eseguito i passaggi seguenti per essere in grado di completare l'installazione del bundler (può sembrare folle, ma lavorato...).

Attraverso una macchina con accesso illimitato a Internet, scaricato i seguenti file:

Ho aggiunto questi file su un server Intranet, mantenendo la struttura delle cartelle dei collegamenti sopra:

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ rapida \ Marshal.4.8

bundler-1.11.2.gemspec.rz

  • gemme $ INTRANET_HOME \

bundler-1.11.2.gem

Quindi ho aggiunto la mia intranet per accedere alla fonte gem:

gem sources -a http://mydomain.com.br

Ho eseguito con successo il "gem install bundler" dopo l'installazione, bastava rimuovere la mia intranet della gemma:

gem sources -r http://mydomain.com.br

Spero che sia utile in qualsiasi situazione simile ....


0

Come utente di Windows 10, ho seguito la risposta di Dheerendra e ha funzionato per me un giorno. Il giorno dopo, ho riscontrato nuovamente il problema e la sua correzione non ha funzionato. Per me, la correzione è stata l'aggiornamento bundlercon:

gem update bundler

Credo che la mia versione di bundlerfosse più vecchia di qualche mese.


0

Assicurati di aver installato ruby ​​con l' opzione --disable-binary , in caso contrario, disinstallalo e reinstallalo con l'opzione.

maggiori informazioni qui


0

La risposta non è più valida Dal momento che ho riscontrato il problema con il vecchio ruby di Windows in questo momento posterò la risposta.

Quando volevo installare una gemma di supporto attivo:

gem in activesupport --version 5.1.6

ERROR:  Could not find a valid gem 'activesupport' (= 5.1.6), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B
: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

I seguenti passaggi devono copiare solo i certificati dal ruby ​​di Windows più recente. Prendi l'ultimo rubino (o almeno rubino 2.4.0 ) e come segue:

copia i certificati da queste directory (adattati alle tue esigenze):
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\rubygems.org
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\index.rubygems.org

a destinazione (adattarsi di nuovo a ciò di cui hai bisogno):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

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.