instalação do pacote falha com erro de verificação de certificado SSL

Quando executo o bundle install para meu projeto Rails 3 no Centos 5.5 ele falha com um erro:

 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 tento instalar a gem manualmente (por gem install multi_json -v '1.3.2' ) ele funciona. O mesmo problema ocorre com várias outras gemas. Eu uso o RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

Como corrigi-lo?

Atualizar

Agora que eu tenho karma wh.err minado o suficiente a partir desta resposta todos devem saber que isso deveria ter sido corrigido.

re: via Ownatik novamente instalação do pacote falha com erro de verificação de certificado SSL

 gem update --system 

Minha resposta ainda está correta e deixei abaixo para referência, se isso acaba não funcionando para você.


Honestamente, a melhor solução temporária é

[…] use a versão não-ssl dos rubygems no seu gemfile como uma solução temporária.

via usuário Ownatik

o que eles significam é no topo do Gemfile em sua mudança de diretório de aplicativo de rails

source 'https://rubygems.org'

para

source 'http://rubygems.org'

note que a segunda versão é http em vez de http s

Substitua a fonte ssl gem por não-ssl como uma solução temporária:

A razão é rubygems antigos. Você precisa atualizar a parte do sistema usando a fonte não ssl primeiro:

gem update --system --source http://rubygems.org/ (temporariamente atualizando parte do sistema usando conexão não-ssl).

Agora você está pronto para usar a gem update .

Se você está em um mac e usa uma versão recente do RVM (~ 1.20), o seguinte comando funcionou para mim.

 rvm osx-ssl-certs update 

Esse problema agora deve ser corrigido. Atualize rubygems ( gem update --system ), certifique-se de que o openssl esteja na última versão do seu sistema operacional, ou tente estas dicas de que ele ainda não está funcionando: http://railsapps.github.com/openssl-certificate-verify-failed. html

Solução temporária (como aludido por Ownatik):

Crie ou modifique um arquivo chamado .gemrc em seu caminho inicial, incluindo a linha :ssl_verify_mode: 0

Isso impedirá que o bundler verifique os certificados SSL de gemas quando tentar instalá-los.

Para dispositivos * nix, ‘caminho inicial’ significa ~/.gemrc . Você também pode criar /etc/gemrc se preferir. Para o Windows XP, ‘home path’ significa c:\Documents and Settings\All Users\Application Data\gemrc . Para o Windows 7, C:\ProgramData\gemrc

No windows7 você pode baixar o arquivo cacert.pem daqui e definir o SSLCERT_FILE ambiance invariable para o caminho onde você armazena o certificado, por exemplo

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

ou você pode definir a variável em seu script como este ENV['SSL_CERT_FILE']="C:/users//cacert.pem"

Substitua por seu próprio nome de usuário.

A solução real para este problema, se você estiver usando o RVM:

  1. Atualize rubygems: gem update --system
  2. Use RVM para atualizar rvm osx-ssl-certs update all SSL: rvm osx-ssl-certs update all

Dica de chapéu para esta dica no projeto RailsApps !

Para aqueles que instalaram o ruby ​​através do RVM e querem uma solução rápida (preferem não ler por solicitação do Bruno), tente isto:

 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 

Para mais detalhes, aqui está o link onde encontrei a solução.

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

BTW, eu não tive que tocar meus certificados no Ubuntu.

O melhor de tudo, isso não é uma solução alternativa. Ele vai baixar gemas através de SSL e falhar se houver um problema como um homem no meio ataque, que é muito melhor do que apenas desligar a segurança.

Isso foi corrigido

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

Agora que o RubyGems 2.6.x foi lançado, você pode atualizar manualmente para esta versão.

Faça o download do https://rubygems.org/downloads/rubygems-update-2.6.7.gem

Faça o download do arquivo em um diretório para o qual você possa mais tarde apontar (por exemplo, a raiz do seu disco rígido C 🙂

Agora, usando o seu prompt de comando:

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

Depois disso, gem –version deve reportar a nova versão de atualização.

Agora você pode desinstalar com segurança o rubygems-update gem:

 C:\>gem uninstall rubygems-update -x 

Você pode baixar uma lista de certificados de CA no site da curl em http://curl.haxx.se/ca/cacert.pem

Em seguida, defina a variável de ambiente SSL_CERT_FILE para dizer ao Ruby para usá-lo. Por exemplo, no Linux:

 $ SSL_CERT_FILE=~/cacert.pem bundle install 

(Referência: https://gist.github.com/fnichol/867550 )

A instrução de copiar cópia simples dada aqui sobre o arquivo .pem

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

Para a verificação de certificado falhou

Se você leu as seções anteriores, você saberá o que isso significa (e envergonha-se) em você, se você não o fez.

Precisamos fazer o download de AddTrustExternalCARoot-2048.pem . Abra um prompt de comando e digite:

C:> gem que rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Agora, vamos localizar esse diretório. Na mesma janela, insira a parte do caminho até a extensão do arquivo, mas usando barras invertidas:

C:> iniciar C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Isto irá abrir uma janela do Explorer dentro do diretório que indicamos.

Etapa 3: Copiar novo certificado de confiança

Agora, localize o diretório ssl_certs e copie o arquivo .pem que obtivemos da etapa anterior.

Ele será listado com outros arquivos como o GeoTrustGlobalCA.pem.

mesmo problema, mas com gem diferente aqui:

 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. 

temporariamente solução: gem install builder -v '3.0.0' torna possível continuar a bundle install

É assim que você resolve esse problema no Windows:

Faça o download do arquivo .perm e configure o SSL_CERT_FILE no prompt de comando

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

Eu recebo um erro ligeiramente diferente, embora talvez relacionado, no 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. 

Isso acontece quando executo o bundle install com a source 'https://rubygems.org' em um Gemfile.

Este é um problema com o OpenSSL no Ubuntu 12.04. Veja a questão # 319 Rubygems .

Para corrigir isso, execute o apt-get update && apt-get upgrade no Ubuntu 12.04 para atualizar seu OpenSSL.

A solução mais simples:

 rvm pkg install openssl rvm reinstall all --force 

Voila!

Consegui rastrear isso até o fato de que os binários que rvm downloads não são rvm com o OpenSSL do OS X, que é antigo e não é mais usado pelo sistema operacional.

A solução para mim foi forçar a compilation ao instalar o Ruby via rvm :

 rvm reinstall --disable-binary 2.2 

Minha correção permanente para o Windows:

  1. Faça o download do CACert , salve como C:\ruby\ssl_certs\GlobalSignRootCA.pem em http://guides.rubygems.org/ssl-certificate-update/

  2. Crie uma variável de sistema chamada ” SSL_CERT_FILE “, definida como C:\ruby\ssl_certs\GlobalSignRootCA.pem .

  3. Tente novamente: 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 

Thx para @ Alexander.Iljushkin para:

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

Depois disso, o bundler ainda falhava e a solução para isso era:

gem install bundler

Eu estava recebendo um erro semelhante. Aqui está como eu resolvi isso: No diretório do caminho, verifique se há Gemfile. Edite a fonte no gemfile para http em vez de https e salve-a. Isso pode instalar o bundler sem o problema de certificado SSL.

Para máquinas Windows, verifique sua versão gem com

 gem --version 

Em seguida, atualize sua gema da seguinte forma:

  • Executando 1.8.x: download 1.8.30
  • Correndo 2.0.x: download 2.0.15
  • Executando 2.2.x: download 2.2.3

Faça o download do arquivo em um diretório para o qual você possa mais tarde apontar (por exemplo, a raiz do seu disco rígido C 🙂

Agora, usando o seu prompt de comando:

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

Agora, a instalação do pacote será bem-sucedida sem o erro de verificação do certificado SSL.

Instruções mais detalhadas é aqui

Isso funcionou para mim:

  • faça o download da última gema em https://rubygems.org/pages/download
  • instale a gem com gem install --local [path to downloaded gem file]
  • atualize as gemas com update_rubygems
  • verifique se você está na última versão gem --version com gem --version

Eu tive que reinstalar o openssl:

 brew uninstall --force openssl brew install openssl 

Recentemente, enfrentei esse problema e segui as etapas descritas aqui . Pode haver uma chance de você não estar apontando para o certificado OpenSSL correto. Depois de correr:

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

e

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

o pacote completo correu!

Faça o download do rubygems-update-2.6.7.gem .

Agora, usando o seu prompt de comando:

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

Depois disso, gem --version deve reportar a nova versão de atualização.

Agora você pode desinstalar com segurança o rubygems-update gem:

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

Para observar, se você estiver pegando gemas de uma fonte na qual o certificado SSL é confiável por uma autoridade de certificação interna (ou se estiver conectando a uma fonte externa por meio de um proxy da Web da empresa com inspeção SSL), aponte sua variável env SSL_CERT_FILE para sua cadeia de certificados . Isso provavelmente requer apenas exportar seu certificado raiz do seu armazenamento de certificados (System Keychain no macOS) para um local acessível a partir do seu shell, por exemplo:

 export SSL_CERT_FILE=~/RootCert.pem 

Se você estiver usando rails-assets

Se você estava usando https://rails-assets.org/ para gerenciar seus resources, nenhuma resposta irá ajudá-lo. Mesmo convertendo para http não ajudará.

A solução mais simples é usar essa fonte, http://insecure.rails-assets.org . Isso foi mencionado em sua página inicial .

A única coisa que funcionou para mim no sistema windows legado e na versão 1.9 do ruby ​​é fazer o download do arquivo cacert em http://guides.rubygems.org/ssl-certificate-update/

E, em seguida, executando abaixo do comando antes de executar a instalação do pacote

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