Como resolver “verificação de certificado falhou” no Windows?

Estou tentando usar o sinete para o OAuth nos serviços do Google. E pegue esse erro:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 

Seguindo estas perguntas:

  • SSL_connect retornado = 1 errno = 0 state = Certificado de servidor de leitura SSLv3 B: falha na verificação do certificado
  • OmniAuth e Facebook: falha na verificação do certificado

Parece que a solução é para corrigir ca_path ou para definir VERIFY_NONE para SSL .

A correção ca_path postada só funciona no Linux (instalação por porta) e a correção para VERIFY_NONE parece ser para o faraday.

Existe uma solução para o Windows / signet gem?

Na verdade, a melhor maneira que encontrei para resolver isso nas janelas do próprio Ruby, e não apenas uma delas, é fazer o seguinte:

  1. Faça o download de https://curl.haxx.se/ca/cacert.pem em c: \ railsinstaller \ cacert.pem. Certifique-se de salvá-lo como um arquivo .pem, em vez de um arquivo de texto.
  2. Vá para o seu computador -> Configurações avançadas -> Variáveis ​​de ambiente
  3. Crie uma nova variável de sistema:

    Variável: SSL_CERT_FILE Valor: C: \ RailsInstaller \ cacert.pem

  4. Feche todos os seus prompts de comando, incluindo o prompt de comando do servidor Rails, etc.

  5. Inicie um novo prompt do ruby-irb e tente o seguinte:

     $irb>require 'open-uri' $irb>open('https://www.gmail.com') 

Tudo deve funcionar agora muito bem.

Solução para o Windows, que eu montei de algumas respostas diferentes:

  1. Faça o download de https://curl.haxx.se/ca/cacert.pem e coloque-o em YOUR_APP / lib / assets (ou onde)
  2. Em config / initializers / omniauth.rb :

      #config/initializers/omniauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, CUSTOMER_KEY, CUSTOMER_SECRET, {client_options: {ssl: {ca_file: Rails.root.join('lib/assets/cacert.pem').to_s}}} end 
  3. Obviamente, reinicie seu servidor.

Notas de rodapé: Você pode ser capaz de cortar muitos dos certificados desnecessários no arquivo cacert.pem para reduzir o tamanho. Se você só precisa desta solução para desenvolvimento, você poderia salvar o arquivo fora do seu projeto e fazer um desenvolvimento if Rails.env.development? _provider linha com a linha client_options hash_ else _provider sem client_options hash_ end

Depois de muita pesquisa e tempo perdido, encontrei uma solução muito simples para corrigir esse problema em Ruby com o Windows.

Dois passos simples:

  1. No prompt de comando, escreva: C:\gem install certified

  2. No seu arquivo rb add: require 'certified'

É isso aí.

A atualização da estrutura de gerenciamento de pacotes rubygems resolveu esse problema para mim no Windows 7.

https://rubygems.org/pages/download

 gem update --system # may need to be administrator or root 

sim, eu configurei o arquivo omniouth.rb na pasta initializers para isto:

 provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:verify => false}}} 

e isso parece funcionar bem agora. Mas não use isso para produção .

Usando o http: // URL em vez de https: // torne isso mais fácil para você

Altere a fonte gem para http://rubygems.org/ usando a seguinte linha de comando na sua linha de comando ruby

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

Vá para a página de download do rubygems-update: https://rubygems.org/gems/rubygems-update

Clique no link Download e baixe um arquivo chamado rubygems-update-2.6.7.gem. Na linha de comando, navegue até o diretório em que você baixou o arquivo .gem e digite:

 gem install rubygems-update-2.6.7.gem 

(ou seja qual for o nome do arquivo, se uma versão mais recente)

Então digite:

 update_rubygems 

Você pode verificar se está atualizado com:

 gem --version 

Adicionando a solução do DevDude, mas usando o Windows Powershell:

Faça o download do http://curl.haxx.se/ca/cacert.pem em c: \ railsinstaller \ cacert.pem

No prompt do powershell:

$env:SSL_CERT_FILE = 'c:\RailsInstaller\cacert.pem'

Eu consegui executar a gem update êxito

Nota: você pode simplesmente definir essa variável de ambiente em seu perfil notepad $profile

Eu tive esse erro ao tentar configurar rails 5 em uma máquina windows, acontece que eu tive que atualizar a versão rubygem para 2.6.7 e depois funcionou.

passo 1 faça o download do rubygem abaixo

 https://rubygems.org/downloads/rubygems-update-2.6.7.gem 

passo 2 – instale apontando os rubygems transferidos

 gem install --local C:\rubygems-update-2.6.7.gem 

passo 3 – verificar nova versão é 2.6.7

 gem --version 

passo 4 – agora desinstale com segurança o rubygems-update gem

 gem uninstall rubygems-update -x 

passo 5 tentou instalar os rails 5 novamente

 gem install rails --version 5.0.0 

funcionou como um encanto!

Recebi informações de: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages

Consegui eliminar a configuração PATH ou VARIÁVEL DO SISTEMA mencionada acima, importando o certificado como uma autoridade confiável.

  1. Invoque certmgr.msc
  2. Clique com o botão direito do mouse na pasta Autoridade de Certificação Raiz Confiável.
  3. Selecione “Todas as Tarefas”
  4. Selecione “Importar”
  5. Selecione Todos os arquivos no menu suspenso tipo de arquivo e selecione o arquivo cacert.pem.
  6. Você deve receber uma mensagem “Importar com êxito”

Eu acredito que a resposta correta é atualizar seu instalador gem: rubygems-update . A explicação de por que isso é necessário é encontrada em: Atualizações de certificado SSL

salve seu arquivo cacert.pmp de https://curl.haxx.se/ca/cacert.pem e, em seguida, inclua este arquivo no local pasta de instalação do myruby \ lib \ ruby ​​\ 2.3.0 \ rubygems \ ssl_certs

por exemplo: C: \ Ruby23 \ lib \ ruby ​​\ 2.3.0 \ rubygems \ ssl_certs

Isso me ajudou: https://coderwall.com/p/ubl6iw/fix-ssl_connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificate-verify-failed-openssl-ssl- sslerror Meu projeto ruby ​​on rails está postando dados em uma API internamente e não pode verificar o certificado interno. Essas linhas ajudaram:

 require 'https' http = Net::HTTP.new('example.com', 443) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.cert_store = OpenSSL::X509::Store.new http.cert_store.set_default_paths http.cert_store.add_file('/path/to/internal.cert.pem') 

Espero que isso possa ajudar.

Eu também estava enfrentando esse problema quando instalei versões mais antigas do Ruby. Quando instalei a versão mais recente do Ruby, este problema desapareceu. Então, basicamente, o certificado SSL precisava ser atualizado.

Para pessoas que estão usando rails 4.

Adicione isto em devise.rb

 require "omniauth-google-oauth2" config.omniauth :google_oauth2, "CLIENT_ID", "CLIENT_SECRET", { access_type: "offline", approval_prompt: "", :client_options => {:ssl => {:verify => false}} }