falha na instalação do pacote configurável com erro de verificação do certificado SSL

264

Quando corro bundle installpara o meu projeto do 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 gema manualmente (por gem install multi_json -v '1.3.2'), ela funciona. O mesmo problema ocorre com várias outras jóias. Eu uso o RVM (1.12.3), ruby ​​1.9.2, empacotador 1.1.3.

Como corrigi-lo?

mrzasa
fonte
Enfrentando o mesmo problema. Mas com outra gema: Gem :: RemoteFetcher :: FetchError: SSL_connect retornou = 1 errno = 0 state = SSLv3 leu o certificado do servidor B: a verificação do certificado falhou ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish)
4
Estou tendo o mesmo erro nas mesmas circunstâncias. Suspeito, dadas essas outras respostas, que seja um problema do lado do servidor.
asfallows
Eu tive um problema semelhante no Rails 5. source "https://rubygems.org''Corrigi-o adicionando o Gemfile e executando o 'gem update --system'. Você pode encontrar mais informações aqui .
Nesha Zoric
Nesha, essa correção funcionou para mim. Obrigado!
Martin Marino

Respostas:

310

Atualizar

Agora que eu tenho karma que extraí o suficiente dessa resposta, todos devem saber que isso deveria ter sido corrigido.

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

gem update --system

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


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

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

via usuário Ownatik

o que eles significam está no topo da Gemfilealteração do diretório de aplicativos rails

source 'https://rubygems.org'

para

source 'http://rubygems.org'

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

Vai
fonte
1
Estou aceitando esta resposta, porque foi isso que fiz no começo. Mais tarde, mudei minha estratégia de implantação. Agora, executo o pacote do aplicativo em outro servidor e o copio (com gemas no vendordiretório) para o servidor sobre o qual escrevi na pergunta.
Mrzasa
6
Isso não funcionou para mim. O link fornecido por @fbernier abaixo o corrigiu para mim.
9138 Scott Fister #
5
Isso não funciona. A execução disso fornece apenas saída de Latest version currently installed. Aborting. outras idéias?
Matt Huggins
1
Em termos de mudança de fonte, para pessoas mais novas como eu. Eu especificaria que esse arquivo está localizado no diretório do aplicativo. Eu estava procurando por ele no diretório railsinstaller. Enfim, mudei a fonte e finalmente funcionou. Estou recebendo erros de certificado ao tentar executar a atualização :(
Brian
2
gem update --systemfalha com exatamente o mesmo erro de certificado: \
BlueRaja - Danny Pflughoeft
226

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

StuR
fonte
8
OMG funcionou como um encanto! Estou no Windows 7 x64 atrás de um proxy corporativo. Muito obrigado!
banerban Ghiță
14
Estou surpreso que isso não tenha sido classificado mais alto, essa foi a solução rápida mais fácil.
Hwatkins #
3
boa solução temporária ... esteja ciente do seguinte: O RubyGems foi configurado para fornecer gemas através dos seguintes URLs ao longo de seu histórico: * gems.rubyforge.org (RubyGems 1.3.6 e anterior) * rubygems.org (RubyGems 1.3. 7 a 1.8.25) * rubygems.org (RubyGems 2.0.1 e mais recente)
beauXjames
1
solução mais rápida para mim no Windows 8
Tisch
3
No entanto, nem isso deve ser considerado uma resposta válida, pois abre o sistema para ataques externos.
rubiii 31/01
160

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/ (atualizando temporariamente a parte do sistema usando a conexão não-SSL).

Agora você está pronto para usar gem update.

Alexander.Iljushkin
fonte
5
Solução realmente simples, que é multiplataforma e permite que o RubyGems cuide dos detalhes. Agradável.
Zrisher
2
este foi o único que deve ser aceite, as respostas acima não explicam o que você precisa para remover as fontes SSL primeiro
Ephraim
1
Obrigado - este é o bilhete. Se você receber uma mensagem "fora do cache" ao adicionar ou remover fontes, tente com ou sem uma barra final. Tem que combinar exatamente.
Timothy Lee Russell
1
Eu procurei em muitas soluções. Este é o que funcionou como um encanto. Obrigado! Isso deve ser escolhido como a verdadeira solução.
Berker Yüceer
1
Obrigado!! Concordo com os outros que essa deve ser a resposta aceita, pois não resulta em você buscar gemas através de HTTP simples.
Alexander
117

Se você estiver em um Mac e usar uma versão recente do RVM (~ 1.20), o seguinte comando funcionou para mim.

rvm osx-ssl-certs update
chaserx
fonte
Obrigado! Trabalhou para mim no Mac OSX 10.8.5
Matthew Blancarte
Obrigado, funcionou para mim também. Eu estava tentando instalar o CocoaPods. rvm 1.22.15, OS X 10.8.5
Logan Moseley
1
Isso também é apontado na mensagem de erro "... consulte bit.ly/ruby-ssl".
IAmNaN
Thankssssss !! Trabalhou para mim !! \ o /
Valter Júnior
55

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

fbernier
fonte
1
Também era necessário atualizar o bundler para fazê-lo funcionar (rubygems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e funciona para mim no winxp).
fakeleft
Eu tive que atualizar da 1.3.0, agora estou na 1.3.4 e o https não está mais lançando o erro: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: em `connect ': SSL_CONNECT voltou = 1 errno = 0 estado = SSLv3 ler servidor de chaves de câmbio B: bad ECPoint (OpenSSL :: SSL :: SSLError)
Jon Kern
3
Não é possível atualizar rubygems se o certificado SSL não for aceito! Correndo em círculos aqui;)
kap
50

Solução temporária (conforme mencionado pela Ownatik):

Crie ou modifique um arquivo chamado .gemrc no 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/gemrcse preferir. Para o Windows XP, 'caminho inicial' significa c:\Documents and Settings\All Users\Application Data\gemrc. Para o Windows 7,C:\ProgramData\gemrc

asfallows
fonte
3
%USERPROFILE%\.gemrctambém é pesquisado gemno Windows.
Rômulo Ceccon
1
Local de arquivo recomendado para o Windows 8?
user1318135
6
A remoção da verificação SSL é uma solução temporária que abre uma falha de segurança. Leia mais aqui: github.com/rubygems/rubygems/commit/…
mrm
Isso é útil no meu caso; atrás de um firewall corporativo que restringe todos os arquivos compactados, mas permite via https.
Mydoghasworms
Não tentei esta solução, mas no meu caso também funcionou quando adicionei este conteúdo ao ~/.gemrc::sources: - http://rubygems.org
Artur Käpp
18

No windows7, você pode baixar o arquivo cacert.pem a partir daqui e definir o SSL_CERT_FILE variável do ambiente como o caminho onde você armazena o certificado, por exemplo

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

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

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

Peter
fonte
3
Obrigado. A correção permanente está aqui. guias.rubygems.org/ssl-certificate-update
Maheshkumar 15/15
Essa é a correção permanente correta e evita o uso de fonte http não segura.
Dio Phung
15

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

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

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

Alan H.
fonte
1
rvm osx-ssl-certs update allfuncionou bem para mim. Necessidade não funcionavam para fazer passo 1.
DMH
7

Para aqueles que possuem o ruby ​​instalado através do RVM e desejam uma solução rápida (preferindo não ler de acordo com a solicitação de Bruno), tente o seguinte:

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 precisei tocar meus certificados no Ubuntu.

O melhor de tudo é que essa não é uma solução alternativa. Ele fará o download de gemas por SSL e falhará se houver um problema como um homem no ataque do meio que é muito melhor do que simplesmente desligar a segurança.

danielrussia
fonte
A página à qual você vincula possui uma "solução alternativa" (primeiro) e depois soluções adequadas. Seria melhor se sua resposta declarasse isso um pouco mais claramente. No entanto, o uso de certificados CA (via cacert.pemou $rvm_path/usr/ssl) é realmente o caminho certo a seguir.
27412 Bruno
1
Bruno, a solução provavelmente será um pouco diferente dependendo do sabor do Unix que a pessoa usa. Parece que a leitura do link será necessária.
Danielrussia
Eu estava falando sobre a diferença entre a "solução alternativa" na página ( :ssl_verify_mode: 0que abre problemas), em oposição a qualquer uma das 3 soluções abaixo, que são a maneira correta de corrigir esse problema.
Bruno
@ Bruno, revisei meu artigo, por favor, adicione comentários ou edite o wiki se você encontrar possibilidades de melhorias.
Daniel Kehoe
6

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 de 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 apontar mais tarde (por exemplo, a raiz do seu disco rígido C :)

Agora, usando seu prompt de comando:

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

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

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

C:\>gem uninstall rubygems-update -x
Roffers
fonte
5

Instruções simples para copiar e colar, fornecidas aqui sobre o arquivo .pem

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

Falha na verificação do certificado

Se você leu as seções anteriores, saberá o que isso significa (e envergonhe> se você não tiver).

Precisamos baixar o 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:> inicie C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Isso 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 GeoTrustGlobalCA.pem.

geniushkg
fonte
4

mesmo problema, mas com gemas diferentes 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.

solução temporária: gem install builder -v '3.0.0'permite continuarbundle install

Ludwig
fonte
7
Você também pode usar a versão não-ssl de rubygems no seu gemfile como uma solução temporária.
precisa saber é o seguinte
1
Eu fiz isso e funciona. Por enquanto, essa é uma solução suficiente.
mrzasa
Eu tenho o mesmo problema aqui. Então, @Ownatik como usar a versão ssl do rubygems?
Zeck
4

A solução mais simples:

rvm pkg install openssl
rvm reinstall all --force

Voila!

user2886774
fonte
2
O que isso realmente faz no meu sistema?
Bradley Flood
4

Minha correção permanente para Windows:

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

  2. Crie a variável do sistema denominada " SSL_CERT_FILE ", configurada 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
Dio Phung
fonte
3

Eu recebo um erro um pouco 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 eu corro bundle installcom source 'https://rubygems.org'um Gemfile.

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

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

Jo Liss
fonte
3

Eu fui capaz de rastrear isso até o fato de que os binários que rvm baixam não são bons 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 compilação ao instalar o Ruby via rvm:

rvm reinstall --disable-binary 2.2
Schrockwell
fonte
Isso funcionou para mim. Você precisa substituir "2.2" pela versão em rubi que você está usando
Josh
3

Thx to @ Alexander.Iljushkin para:

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

Depois que o bundler ainda falhou, a solução foi:

gem install bundler

Sebastian Axe
fonte
2

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

ecksor5
fonte
2

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

gem --version

Atualize sua gema da seguinte maneira:

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

Agora, usando 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 configurável será bem-sucedida sem erro de verificação do certificado SSL.

Instruções mais detalhadas estão aqui

KBIIX
fonte
1

Isso funcionou para mim:

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

Eu tive que reinstalar o openssl:

brew uninstall --force openssl
brew install openssl
gabeodess
fonte
1

Recentemente, fui confrontado com 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 foi executado!

jshaf
fonte
1

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

Agora, usando 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 --versiondeve relatar 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
Aswathy
fonte
1

Observe que, se você estiver pegando gemas de uma fonte na qual o certificado SSL é confiável por uma autoridade de certificação interna (ou você estiver se conectando a uma fonte externa por meio de um proxy da web da empresa com inspeção SSL), aponte sua variável de ambiente SSL_CERT_FILE para sua cadeia de certificados . Provavelmente, isso requer apenas a exportação do seu certificado raiz do seu repositório de certificados (System Keychain no macOS) para um local acessível a partir do seu shell, ou seja:

export SSL_CERT_FILE=~/RootCert.pem
mostlikelee
fonte
0

Se você estiver usando rails-assets

Se você estava usando https://rails-assets.org/para gerenciar seus ativos, nenhuma resposta o ajudará. Mesmo convertendo para httpnão vai ajudar.

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

Anwar
fonte
0

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

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

bundle config --global ssl_ca_cert /path/to/file.pem
Aleksandar Pavić
fonte