Errore SSL Durante l’installazione di rubygems, imansible estrarre i dati da ‘https://rubygems.org/

Sto cercando di fare il tutorial di Michael Hartl. Quando provo a installare i binari 3.2.14 nel mio gemset, ottengo il seguente problema:

$ gem install rails -v 3.2.14

ERRORE: imansible trovare una gem valida ‘rails’ (= 3.2.14), ecco perché:

Imansible scaricare i dati da https://rubygems.org/ – SSL_connect restituito = 1 errno = 0 stato = certificato server di lettura SSLv3 B: verifica certificato non riuscita ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Dopo aver fatto ricerche su Google, ho scoperto che potevo utilizzare una fonte non SSL per rubygems, quindi ho eseguito:

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

Poi, quando ho provato a installare di nuovo i binari, ha avuto successo. Tuttavia, ho ancora il problema sopra ma come avvertimento:

ATTENZIONE: imansible estrarre i dati da ‘ https://rubygems.org/ ‘: SSL_connect restituito = 1 errno = 0 stato = SSLv3 leggere il certificato del server B: verifica del certificato fallita ( 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 (2013-06-27 revisione 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Per utenti RVM e OSX

Assicurati di utilizzare l’ultimo rvm:

 rvm get stable 

Quindi puoi fare due cose:

  1. Aggiorna certificati:

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

     rvm rubygems latest 

Per utenti non RVM

Trova il percorso per il 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/wayneeseguegu/rvm/blob/master/scripts/functions/osx-ssl-certs


Per utenti non OSX

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

Nota di Windows

I build di Ruby Installer per Windows sono preparati da Luis Lavena e il percorso dei 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.

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 metterlo

 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 vai avanti sulla tua attività.

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

Se si desidera utilizzare l’origine non SSL, provare prima a rimuovere l’origine HTTPS e quindi aggiungere quello 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 alcuni problemi di sicurezza se si accede a RubyGems tramite la fonte non SSL.

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

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

Su Windows dovrai usare la fonte HTTP per aggiornare la gem poi 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 se questo è sicuro . Qualcuno sa se i pacchetti di rubini sono firmati? La risposta accettata sembra una soluzione migliore.

Per utenti Windows (e forse altri)

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

Prima scopri quali rubygems hai:

 rubygems –v 

A seconda che tu abbia un 1.8.x, 2.0.x o 2.2.x, dovrai scaricare un gem di aggiornamento, denominato “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 gem di aggiornamento:

 gem install –-local full_path_to_the_gem_file 

Esegui gem di aggiornamento:

 update_rubygems --no-ri --no-rdoc 

Verifica che i rubygems siano stati aggiornati:

 rubygems –v 

Disinstallare l’aggiornamento gem:

 gem uninstall rubygems-update -x 

A questo punto, potresti essere OK. Ma è ansible che tu non abbia l’ultimo file di chiave pubblica per il nuovo certificato. Per fare questo:

Scarica il certificato più recente, (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.

Secondo commit rubygems , i certificati vengono spostati in directory più specifiche. Quindi, attualmente il certificato (AddTrustExternalCARoot-2048.pem) dovrebbe essere sul seguente percorso lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

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

Esempio –

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

Questo funziona, ma c’è un avvertimento però.

La gem è installata, ma la documentazione non è a causa di errori cert. Ecco l’errore che ottengo

 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) 

gem update --system esecuzione gem update --system funzionato per me

Semplicemente disinstallando e reinstallando openssl con homebrew ho risolto questo problema per me.

brew uninstall --force openssl

brew install openssl

Per gli utenti Fedora

Aggiorna il file cert.pem al file più recente fornito da cURL: http://curl.haxx.se/ca/cacert.pem

 curl -o `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' |tr -d \"` http://curl.haxx.se/ca/cacert.pem 

Se stai usando windows, apri https://rubygems.org/ con internet explorer.

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

Assicurati 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 mostrate sopra 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 ha risolto immediatamente il problema. Ecco il comando che ho usato nel mio caso:

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

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

  sudo update-ca-certificates 

Il caso particolare di RubyGems (lo strumento della riga di comando) è che richiede di raggruppare all’interno del suo codice i certificati di affidabilità, che consentono a RubyGems di stabilire una connessione con i server anche quando il sistema operativo di base non è in grado di verificarne l’id quadro.

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

Per questo motivo, le installazioni esistenti di RubyGems dovrebbero essere aggiornate prima del passaggio del certificato e fornire tempo sufficiente per la diffusione della modifica (e per le persone da aggiornare)

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

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

Provare

 gem update --system 

Spero che risolva il problema.

Ho avuto lo stesso problema durante il tentativo di installare gem di cetriolo. Tuttavia ho notato che bundler gem è già stato installato con Ruby 2.0. Ho creato un Gemfile.rb nella cartella del progetto con le gemme richieste e ho seguito questa procedura

  1. Passare alla cartella del progetto
  2. Digitare installazione bundle

Tutte le gemme richieste installate.

Per Illumos / Solaris utilizzando pkgutil OpenCSW:

Installare CSWcacertificates prima di “gem install”

 pkgutil -yi CSWcacertificates 

Se stai utilizzando un kit di rubini che non proviene da OpenCSW, la tua versione in ruby potrebbe aspettarsi di trovare il file del certificato in un altro posto. In questo caso, ho semplicemente collegato con symlink il file /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 

O potrebbe essere impedito dal firewall come me. Prova questo:

sudo gem installa –http-proxy http: // localhost: porta cocoapods -V

Per utenti Windows:

Dopo aver installato Ruby 2.2.3 (+ rubygems 2.5.1) su una macchina di prova con accesso a Internet, ho avuto 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 seguenti passaggi per essere in grado di terminare l’installazione del bundler (potrebbe sembrare folle, ma lavorato…).

Attraverso una macchina con accesso illimitato a Internet, ha 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

  • $ INTRANET_HOME \ gemme

bundler-1.11.2.gem

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

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

Ho seguito con successo il “gem install bundler” dopo l’installazione, è bastato rimuovere la mia intranet della gem:

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

Spero che sia utile in qualsiasi situazione simile ….

Come utente di Windows 10, ho seguito la risposta di Dheerendra, e ha funzionato per me un giorno. Il giorno dopo, ho riscontrato di nuovo il problema e la sua correzione non ha funzionato. Per me, la correzione era di aggiornare bundler con:

gem update bundler

Credo che la mia versione di bundler fosse più vecchia di alcuni mesi.

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

maggiori informazioni qui

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

Quando volevo installare una gem activesupport:

 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 da rubini di Windows più recenti. Prendi l’ultimo ruby (o almeno ruby 2.4.0 ) e fai quanto 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 (di nuovo regolare ciò di cui hai bisogno):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs