Estou usando o Authlogic-Connect para logins de terceiros. Após executar as migrações apropriadas, os logins do Twitter / Google / Yahoo parecem funcionar bem, mas o login do Facebook gera uma exceção:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
O log do desenvolvedor mostra
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
app/controllers/users_controller.rb:37:in `update'
Por favor sugira..
Respostas:
Encontrei um problema semelhante ao tentar usar o gerador JQuery para o Rails 3
Eu resolvi assim:
Obtenha o pacote CA (autoridade de certificação) CURL. Você pode fazer isso com:
sudo port install curl-ca-bundle
[se você estiver usando MacPorts]wget http://curl.haxx.se/ca/cacert.pem
Executar o código ruby que está tentando verificar a certificação SSL:
SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install
. No seu caso, você deseja definir isso como uma variável de ambiente em algum lugar que o servidor a apanha ou adicionar algo comoENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
no seu arquivo environment.rb.Você também pode instalar os arquivos da CA (não tentei isso) no sistema operacional - há instruções longas aqui - isso deve funcionar de maneira semelhante, mas não tentei pessoalmente.
Basicamente, o problema que você está enfrentando é que alguns serviços da Web estão respondendo com um certificado assinado em uma CA que o OpenSSL não pode verificar.
fonte
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pem
seguido porexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
o.env
arquivo e o aplicativo do meu aplicativo - todos felizes.Se você estiver usando o RVM no OS X, provavelmente precisará executar o seguinte:
Mais informações aqui: http://rvm.io/support/fixing-broken-ssl-certificates
E aqui está a explicação completa: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md
Atualizar
No Ruby 2.2, talvez seja necessário reinstalar o Ruby da fonte para corrigir isso. Veja como (substitua
2.2.3
pela sua versão do Ruby):Crédito para https://stackoverflow.com/a/32363597/4353 e Ian Connor .
fonte
rvm reinstall 2.2.0 --disable-binary
mas você deve instalar a instalação e começar do zero.Veja como você pode corrigi-lo no Windows: https://gist.github.com/867550 (criado por Fletcher Nichol)
Excerto:
fonte
O Ruby não consegue encontrar nenhum certificado raiz para confiar.
Dê uma olhada nesta postagem do blog para obter uma solução: " Ruby 1.9 e o erro SSL ".
fonte
A razão pela qual você obteve esse erro no OSX é o ruby instalado no rvm.
Se você se deparar com esse problema no OSX, poderá encontrar uma explicação realmente ampla sobre este post no blog:
http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html
A versão curta é que, para algumas versões do Ruby, o RVM baixa binários pré-compilados, que procuram certificados no local errado. Ao forçar o RVM a baixar a fonte e compilar em sua própria máquina, você garante que a configuração do local do certificado esteja correta.
O comando para fazer isso é:
se você já possui a versão em questão, pode reinstalá-la com:
(obviamente, substitua sua versão ruby conforme necessário).
fonte
\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
e depoisrvm install <ruby-version> --disable-binary
Em um ponto, eu também fiz,rvm get head
pois esses são alguns problemas de ponta.SSL_CERT_FILE
. Depoisrvm install 2.2.0 --disable-binary
, o problema foi resolvido.A questão é que o ruby não consegue encontrar um certificado raiz em que possa confiar. A partir de 1,9 ruby verifica isso. Você precisará ter o certificado de ondulação no seu sistema na forma de um arquivo pem. Você também precisará garantir que o certificado esteja no local que o ruby espera que esteja. Você pode obter este certificado em ...
Se você é um usuário RVM e OSX, a localização do arquivo de certificado varia de acordo com a versão do ruby que você está usando. Definir o caminho explicitamente com: ca_path é uma idéia MAU, pois seu código não será portátil quando chegar à produção. Lá, você deseja fornecer ao ruby um certificado no local padrão (e suponha que seus desenvolvedores saibam o que estão fazendo). Você pode usar o dtruss para descobrir onde o sistema está procurando o arquivo de certificado.
No meu caso, o sistema estava procurando o arquivo cert em
no entanto, o sistema MACOSX esperaria um certificado em
Copiei o certificado baixado para esse caminho e funcionou. HTH
fonte
~/.rvm/usr/ssl/cert.pem
cacert.pem
no OS X. O OS X não usacacert.pem
. Os certificados do sistema e do usuário são armazenados no KeyChain. Ruby deve estar se integrando ao KeyChain no OS X.A nova jóia certificada foi projetada para corrigir isso:
https://github.com/stevegraham/certified
fonte
bundle
explicitamente,require "certified"
apenas para ter certeza, e nada muda. o que estou perdendo?cacert.pem
no OS X. O OS X não usacacert.pem
. Os certificados do sistema e do usuário são armazenados no KeyChain. Ruby deve estar se integrando ao KeyChain no OS X. O OpenSSL nunca distribuiu acacert.pem
. Não está claro para mim o porquê de qualquer software adiar o OpenSSL por isso.Basta adicionar a gem 'certificada' no seu gemfile e executar a instalação do pacote.
fonte
No Mac OS X Lion com o macport mais recente:
Em seguida, execute novamente o trabalho com falha.
Observe que o local do arquivo de certificação parece ter sido alterado desde que Eric G respondeu em 12 de maio.
fonte
export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
a seu .profile ou .bashrcUm liner o corrige no Windows em um prompt do administrador
choco install wget
(veja pela primeira vez chocolatey.org )Ou apenas faça o seguinte:
Método de Milanio:
fonte
Bem, isso funcionou para mim
Algo está errado com a implementação openssl do meu ubuntu 12.04
fonte
curl -O http://curl.haxx.se/ca/cacert.pem
,mv cacert.pem cert.pem
,mv cert.pem $rvm_path/usr/ssl
Apesar de saber que é uma solução esfarrapada, ainda estou compartilhando isso porque parece que poucas pessoas que respondem aqui usam Windows e acho que alguns usuários do Windows (inclusive eu) gostariam de uma abordagem simples e intuitiva.
Isso indica onde o seu openssl está procurando o arquivo cert. Meu nome não é Luis, mas o meu era
C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem
. O caminho pode ser diferente dependendo de cada ambiente (por exemplo, emopenknapsack
vez deluislavena
).O caminho não mudou mesmo depois
set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
do console, então ... eu criei o diretórioC:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl
no meu disco local e coloquei um arquivo cert nele.Por pior que seja, certamente funcionará.
fonte
Eu tentei instalar
curl-ca-bundle
combrew
, mas o pacote não está mais disponível:A solução que funcionou para mim no Mac foi:
Adicione esta linha no seu
~/.bash_profile
(ou~/.zshrc
no zsh):Atualize seu terminal:
fonte
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
~/.bash_profile
, ele deixa um lembrete do que foi adicionado (e, crucialmente, onde) quando novas atualizações são necessárias.Aqui está outra opção para fins de depuração.
Certifique-se de nunca usar isso em qualquer ambiente de produção, pois isso negará os benefícios do uso do SSL em primeiro lugar. Só é válido fazer isso no seu ambiente de desenvolvimento local.
fonte
Eu tive esse mesmo problema enquanto trabalhava em um projeto Ruby. Estou usando o Windows 7 64bit.
Eu resolvi isso da seguinte maneira:
fonte: https://gist.github.com/fnichol/867550
fonte
A resposta mais direta que funcionou para mim foi esta
E pronto !!!
fonte
OS X 10.8.x com Homebrew:
fonte
Então, como sugere este post,
" Como curar o comportamento HTTPS padrão arriscado do Net :: HTTP "
convém instalar a
always_verify_ssl_certificates
gema que permite definir um valor padrão paraca_file
.fonte
Isso funcionou para mim. Se você estiver usando rvm e brew:
fonte
Encontrei este problema e a correção sugerida de
rvm osx-ssl-certs update all
não funcionou, apesar de eu ser um usuário RVM no OSX.A correção que funcionou para mim foi reinstalar a versão mais recente do openssl:
fonte
Corrigi esse problema executando isso no terminal. O artigo completo está disponível aqui
fonte
Solução OSX:
instale a última versão estável do rvm
use o comando rvm para resolver os certificados automaticamente
fonte
Se você estiver executando seu aplicativo rails localmente, basta adicionar esta linha na parte inferior do application.rb.
Depois disso, você pode usar o aplicativo sem problemas. Você pode chamá-lo de hack, mas não é recomendado. Use somente quando precisar executar localmente
fonte
Aqui está o que eu fiz que ajudou se você está especificamente tendo um problema no Leopard.
Meu certificado era antigo e precisava ser atualizado. Eu baixei este:
http://curl.haxx.se/ca/cacert.pem
Em seguida, substituí o meu certificado, encontrado aqui no Leopard:
Recarregue o que você tem que está acessando e você deve estar pronto!
fonte
Só porque as instruções eram um pouco diferentes para o que funcionou para mim, pensei em adicionar meus 2 centavos:
Estou no OS X Lion e uso macports e rvm
Eu instalei o curl-ca-bundle:
Então eu ajustei minha configuração omniauth para esta:
fonte
ca-bundle.crt
) e usar o Google Internet Authority G2 no:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
. Esse é o único necessário para certificar as conexões com o Google.Se você possui um link simbólico no / usr / local / etc / openssl apontando para cert.pem, tente fazer o seguinte:
fonte
O que funcionou para mim é uma combinação de respostas, a saber:
fonte
Eu tive problemas por vários dias e estava hackeando. Este link provou ser extremamente útil para mim. Isso me ajudou a fazer uma atualização bem-sucedida do SSL no MAC OS X 9.
fonte
Às vezes, nem sempre é o problema do rvm no MAC OSX; se você remover o .rvm, o problema ainda (especialmente enquanto você faz backup dos dados do timemachine), você pode tentar dessa maneira.
fonte
Adicionar
gem 'certified', '~> 1.0'
ao meuGemfile
e executandobundle
resolveu esse problema para mim.fonte