Erro SSL Ao instalar rubygems, Não foi possível extrair dados de 'https://rubygems.org/

269

Estou tentando fazer o tutorial de Michael Hartl. Quando tento instalar os trilhos 3.2.14 no meu gemset, recebo o seguinte problema:

$ gem install rails -v 3.2.14

ERRO: Não foi possível encontrar um 'trilho' de gema válido (= 3.2.14), eis o motivo:

Não foi possível fazer o download dos dados em https://rubygems.org/ - SSL_connect retornou = 1 erro = 0 estado = SSLv3 leu o certificado do servidor B: falha na verificação do certificado ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Depois de pesquisar no Google, descobri que podia usar uma fonte não SSL para rubygems, então executei:

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

Então, quando tentei instalar os trilhos novamente, foi bem-sucedido. No entanto, ainda recebi o problema acima, mas como um aviso:

AVISO: Não é possível extrair dados de ' https://rubygems.org/ ': SSL_connect retornado = 1 errno = 0 state = SSLv3 lê o certificado do servidor B: a verificação do certificado falhou ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Como posso remover completamente este aviso / erro?

Estou usando o seguinte:

  • rvm 1.22.15
  • ruby 2.0.0p247 (27-06-2013 revisão 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5
tpw
fonte
Parece quase um erro de regressão. Notei que um dos meus alunos está tendo o mesmo problema hoje no OS X. Ainda trabalhando na questão. Existem outras questões relacionadas (idênticas?) Ao SO desde o ano passado.
vgoff
Este é um bug conhecido nas 2.0.*versões obsoletas ( ) do rubygems. Tente atualizar para a versão mais recente do rubygems: gem update --systeme execute novamente gem install.
Aleksei Matiushkin
Se não há problema em atualizar sua versão ruby, atualize-a. Esse problema foi corrigido na versão ruby ​​mais recente.
Hong
Depois de adicionar a fonte http, a execução gem sources -r https://rubygems.org/funcionou para mim (na medida em que remover o aviso).
BrainSlugs83
Há muitas respostas longas, enquanto isso pode ser resolvido em uma linha no Linux / Mac: stackoverflow.com/a/56993071/5689995
laimison

Respostas:

382

Para usuários RVM e OSX

Certifique-se de usar o mais recente rvm:

rvm get stable

Então você pode fazer duas coisas:

  1. Atualizar certificados:

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

    rvm rubygems latest

Para usuários não RVM

Encontre o caminho para o certificado:

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

Gere certificado:

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

Todo o código: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Para usuários não OSX

Certifique-se de atualizar o pacote ca-certificates. (em sistemas antigos, pode não estar disponível - não use um sistema antigo que não receba mais atualizações de segurança)

Nota do Windows

As versões do Ruby Installer para Windows são preparadas por Luis Lavena e o caminho para os certificados mostrará algo como C:/Users/Luis/...verifique https://github.com/oneclick/rubyinstaller/issues/249 para obter mais detalhes e esta resposta https://stackoverflow.com / a / 27298259/497756 para correção.

mpapis
fonte
Existe alguma outra maneira de atualizar os certificados se você não estiver usando o RVM?
Eduardo
A execução rvm rubygems latestresultou em um erro de reclamação sobre a falta de somas de verificação. No entanto, as coisas começaram a funcionar sem isso também ... aparentemente você poderia forçá-lo, --verify-downloads 1se necessário. Alguma idéia do porquê disso? Tentou recuperar a versãorubygems-2.1.6
Timo
O rvm codifica o md5s para downloads em seu código, apenas os adicionei à headversão e será lançado em stablebreve.
9133 mpapis
2
Eu corro isso no Windows e obtenho o caminho que nem existe no meu computador "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Também não há usuário chamado Luis. Que diabos?
Isimmons
3
Alguma sugestão para usuários do Mac Mojave? Correndo parapermission denied: /private/etc/ssl/cert.pem
Chandrew
241

Últimos resultados ...

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

Mais importante ainda ... baixe https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Descobrir onde colocá-lo

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

Em seguida, basta copiar o arquivo .pem em ../2.1.0/rubygems/ssl_certs/ e continuar com seus negócios.

beauXjames
fonte
8
Certifique-se de salvar com a .pemextensão, não .pem.txt!
Dan Dascalescu
3
E se não funcionar? Fiz o que suas respostas dizem, mas ainda recebo o erro! 1) Eu obtive o arquivo AddTrustExternalCARoot-2048.pem, 2) Coloquei o arquivo em C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) Eu corro gem install susye recebo o mesmo erroUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Verde
tente atualizar instalar o rubi ... esta essência não garante a compatibilidade com a sua versão
beauXjames
1
Algumas notas sobre o link de luis lavena que você deu. Você pode instalar rubygems a partir de um arquivo gem em vez dos arquivos zip que ele menciona. Não encontrei um comando para instalar a partir de um arquivo zip ou gem descompactado. Gem aqui - rubygems.org/pages/download . O comando é:gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad
9
o link para download não é mais válido. Para aqueles que ainda enfrentam esse problema, consulte a resposta de Dheerendra para obter uma solução
Llama.new
174

Para usuários do Windows

Ir para o link http://rubygems.org/pages/download

  1. Baixe o arquivo zip mais recente (no meu caso 2.4.5)
  2. Descompacte
  3. execute "ruby setup.rb" na pasta descompactada
  4. agora execute o comando gem install
Dheerendra Kulkarni
fonte
1
Trabalhou para mim no Windows 8.1, Ruby 2.0.0. Felicidades.
Yi Zeng
7
Melhor solução para usuários do Windows
Sorin Haidau 24/02
1
Muito mais fácil do que as alternativas para o Windows listadas em outras respostas e funcionou perfeitamente no Windows 7 de 64 bits. Obrigado!
Gurgadurgen 13/03/2015
1
Isso não funciona para mim. Devkit não é compatível com a última versão do Ruby on windows 7
roo2
2
Funciona para mim no Windows 10 e Ruby 2.1.0. Obrigado!
MSC
54

Se você deseja usar a fonte não SSL, tente remover a fonte HTTPS primeiro e, em seguida, adicione a fonte HTTP:

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

ATUALIZAR:

Como afirma o mpapis, isso deve ser usado apenas como uma solução temporária. Pode haver algumas preocupações de segurança se você estiver acessando o RubyGems através da fonte não SSL.

Quando a solução alternativa não for mais necessária, você deve restaurar a fonte SSL:

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org
Eduardo
fonte
não para baixo votando como este solas este problema imediato, mas deixa o seu rubi com certificados antigos que ainda é ruim
mpapis
1
Eu atualizei a resposta para tentar esclarecer que essa é apenas uma solução alternativa para o problema raiz. Apenas tentei resolver o problema de Terin quando ele tentou usar a fonte não SSL.
Eduardo
5
Para sua informação, eu tive que fazer sudo gem sources -r https://rubygems.org/e sudo gem sources -r http://rubygems.org/. Observe a trilha /.
Ross Rogers
Sim, é possível. Eu acho que depende da maneira como a fonte foi adicionada em primeiro lugar. Quero dizer, se a fonte foi adicionada ao final /, ela também deve ser removida com o final /.
Eduardo
A única solução que funcionou para mim para fazer o download da fu @ ^! # Gem. Muito obrigado!
Genarito 31/10/19
16

No Windows, você precisará usar a HTTPfonte para atualizar geme voltar a usar 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/

Edit: Warning Não tenho certeza se isso é seguro . Alguém sabe se os pacotes ruby ​​estão assinados? A resposta aceita parece uma solução melhor.

roo2
fonte
Obrigado por compartilhar; alterar temporariamente o https para http funcionou, mas eu precisava alterar diretamente o gemfile.
Noha Kareem
2
No meu caso, eu precisava de um trailing / com o https https.
Alwyn Schoeman
1
Como uma atualização para esta resposta, é uma boa ideia antes de começar gem sources -la ver suas fontes antes e depois da atualização do sistema. Se a atualização falhar, especifique um número de versão logo após o sistema -. Veja rubygems.org/gems/rubygems-update/versions ou pergunte a colegas de trabalho quais gem -vrelatórios.
Gary S. Weaver
10

Para usuários do Windows (e talvez outros)

O Rubygems.org tem um guia que não apenas explica como corrigir esse problema, mas também porque muitas pessoas o estão enfrentando: Atualização do certificado SSL O motivo do problema é que o rubygems.org mudou para um certificado SSL mais seguro (SHA-2 que use criptografia de 256 bits). A ferramenta de linha de comando rubygems agrupa a referência ao certificado correto. Portanto, o próprio rubygems não pode ser atualizado usando uma versão mais antiga do rubygems. Rubygems devem primeiro ser atualizados manualmente.

Primeiro descubra quais rubygems você tem:

rubygems v

Dependendo se você possui um 1.8.x, 2.0.x ou 2.2.x, será necessário fazer o download de uma atualização, denominada “rubygems-update-XYZgem”, em que XYZ é a versão que você precisa. Execução 1.8.x: download: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Execução 2.0.x: download: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Executando o 2.2.x: download: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Instale a atualização gem:

gem install –-local full_path_to_the_gem_file

Execute a atualização gem:

update_rubygems --no-ri --no-rdoc

Verifique se rubygems foi atualizado:

rubygems v

Desinstale a atualização gem:

gem uninstall rubygems-update -x

Neste ponto, você pode estar bem. Mas é possível que você não tenha o arquivo de chave pública mais recente para o novo certificado. Para fazer isso:

Faça o download do certificado mais recente (atualmente AddTrustExternalCARoot-2048.pem) em https://rubygems.org/pages/download . Todos os documentos também estão localizados em: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Descubra onde colocá-lo:

gem which rubygems

Coloque este arquivo no diretório "rubygems \ ssl_certs" neste local.

Conforme confirmado por rubygems , os certificados são movidos para diretórios mais específicos. Portanto, atualmente o certificado (AddTrustExternalCARoot-2048.pem) deve estar no caminho a seguirlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

John Pankowicz
fonte
8

Tente usar o site de origem para as gemas, ou seja, rubygems.org. Use http em vez de https. Este método não envolve nenhum trabalho, como a instalação de certificados e tudo mais.

Exemplo -

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

Isso funciona, mas há uma ressalva.

A gem está instalada, mas a documentação não é devido a erros de certificação. Aqui está o erro que recebo

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)
Erran Morad
fonte
7

Correr gem update --systemfuncionou para mim

user3408293
fonte
6
Isso funcionou para mim também no Windows. Eu tive que mudar temporariamente para o HTTP clássico, atualizá-lo e depois voltar para o SSL.
Tom Mayfield
1
ERRO. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Verde
fontes de gema --remove rubygems.org fontes gem -a rubygems.org atualização gem --system
Stefan Steiger
4

Verifique se o relógio do sistema está correto

Esse erro exato aconteceu comigo hoje em uma máquina virtual Ubuntu rodando no VirtualBox. Tentei a maioria das soluções mostradas acima antes de perceber que havia voltado de um estado suspenso muito antigo e meu relógio estava desativado por muitos dias.

A atualização do relógio corrigiu imediatamente o meu problema. Aqui está o comando que usei no meu caso:

parada do ntp do serviço sudo && sudo ntpdate pool.ntp.org && início do ntp do serviço sudo

dbrewer
fonte
4

Simplesmente desinstalar e reinstalar o openssl com o homebrew resolveu esse problema para mim.

brew uninstall --force openssl

brew install openssl

ntj
fonte
1
Com versões mais recentes de homebrew pode ser necessário para executar o comando assim: brew uninstall --ignore-dependencies openssl(o que é o equivalente do velho forceflag)
Batkins
3

Para usuários do Fedora

Atualize o cert.pemarquivo para o mais novo fornecido pelo 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
ENDOH takanao
fonte
Existe Windows cmd ou PowerShell equivalente para isso?
Erran Morad
3

Se você estiver usando o Windows, abra https://rubygems.org/ com o Internet Explorer.

Clique nas informações de segurança e importe o certificado. O resultado final é que sua cadeia de certificação está desatualizada e você precisa adicionar este novo certificado. Lembre-se de que isso não é uma violação de segurança, desde que você possa validar o certificado como confiável.

Paulo Fidalgo
fonte
Isso não fez nada para mim ... O OpenSSL usa o armazenamento de certificados do Windows?
Julien Ruffin
2

No meu caso, os certificados CA do Ubuntu estavam desatualizados. Corrigi-o executando:

 sudo update-ca-certificates
maniek
fonte
2

Abordagem / one-liner que pode ser automatizada para baixar gemas usando HTTP em vez de HTTPS:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc
Laimison
fonte
O Works aperfeiçoa se você encontrar problemas em um contêiner de docker!
User7364588 31/01
1

O caso específico do RubyGems (a ferramenta de linha de comando) é que ele requer agrupar dentro de seu código os certificados confiáveis, o que permite ao RubyGems estabelecer uma conexão com os servidores, mesmo quando o sistema operacional básico não consegue verificar a identidade deles.

Até alguns meses atrás, esse certificado era fornecido por uma autoridade de certificação, mas um certificado mais novo era fornecido por uma autoridade de certificação diferente.

Por esse motivo, as instalações existentes do RubyGems precisariam ser atualizadas antes da troca do certificado e permitiriam tempo suficiente para que a mudança se espalhasse (e as pessoas atualizassem)

Qualquer pessoa pode encontrar sua solução seguindo as etapas simples fornecidas no link abaixo

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

ImranNaqvi
fonte
1

Experimentar

gem update --system

Espero que isso resolva o problema.

puneet18
fonte
Funciona para mim. Obrigado. Ubuntu; Ruby foi instalado usando apt install ruby.
Marslo 3/07
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)
21718 Jonathan
1

Faça o download do arquivo cacert.pem em http://curl.haxx.se/ca/cacert.pem . Salve este arquivo em C: \ RailsInstaller \ cacert.pem.

Agora, torne o ruby ​​ciente do seu pacote de autoridade de certificação configurando SSL_CERT_FILE. Para definir isso na sessão atual do prompt de comando, digite:

configure SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem

Shubham Kumar Gupta Ggps
fonte
0

Eu tive o mesmo problema ao tentar instalar a gema de pepino. No entanto, notei que a jóia do bundler já está instalada com o ruby ​​2.0. Criei um Gemfile.rb na pasta do projeto com as gemas necessárias e segui estas etapas

  1. Navegue para a pasta do projeto
  2. Digite instalação do pacote

Todas as gemas necessárias instaladas.

user3037926
fonte
0

Para Illumos / Solaris usando o OpenCSW pkgutil:

Instale CSWcacertificates antes de 'gem install'

pkgutil -yi CSWcacertificates

Se você estiver usando um kit ruby ​​que não seja do OpenCSW, sua versão do ruby ​​poderá encontrar o arquivo de certificado em outro local. Nesse caso, simplesmente vinculei o /etc/opt/csw/ssl/cert.pem do OpenCSW ao local esperado.

Verifique onde o ruby ​​espera encontrá-lo:

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

Então, se houver uma discrepância, vincule-a:

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

Ou pode ser impedido por firewall como eu. Tente o seguinte:

sudo gem install --http-proxy http: // localhost: port cocoapods -V

Victor Choy
fonte
0

Para usuário do Windows:

Depois de instalar o Ruby 2.2.3 (+ rubygems 2.5.1) com êxito em uma máquina de teste com acesso à Internet, tive esse erro SSL ao instalar o empacotador em uma máquina de produção, dentro da rede.

Como eu tinha limitações de acesso à rede e não havia como alterar as configurações de acesso SSL, e com base nas mensagens de erro, executei as etapas abaixo para concluir a instalação do bundler (isso pode parecer loucura, mas trabalhou ...).

Por meio de uma máquina com acesso irrestrito à Internet, baixou os seguintes arquivos:

Adicionei esses arquivos em um servidor de intranet, mantendo a estrutura de pastas dos links acima:

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ quick \ Marshal.4.8

bundler-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ gemas

bundler-1.11.2.gem

Então eu adicionei minha intranet para acessar a fonte da gema:

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

Corri com o sucesso o "gem install bundler" após a instalação, bastava remover minha intranet da gem:

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

Espero que seja útil em qualquer situação semelhante ....

Rogério Arantes
fonte
0

Como usuário do Windows 10, segui a resposta de Dheerendra e funcionou para mim um dia. No dia seguinte, tive o problema novamente e sua correção não funcionou. Para mim, a correção era atualizar bundlercom:

gem update bundler

Acredito que minha versão bundlertinha mais de alguns meses.

Alexander
fonte
0

Verifique se você instalou o ruby ​​com a opção --disable-binary , caso contrário, desinstale-o e reinstale-o com a opção

mais informações aqui

Feuda
fonte
0

A resposta não é mais válida. Desde que eu encontrei o problema com o ruby mais antigo do Windows agora, postarei a resposta.

Quando eu queria instalar uma jóia do activeesupport:

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)

As etapas a seguir precisam copiar apenas os certificados do Windows Ruby mais recente. Pegue o último ruby ​​(ou pelo menos o ruby 2.4.0 ) e faça o seguinte:

copie certificados desses diretórios (ajuste de acordo com suas necessidades):
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

ao destino (ajuste novamente o que você precisa):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

tukan
fonte