Vik*_*ash 279 ruby ssl ruby-on-rails authlogic facebook-graph-api
我正在使用Authlogic-Connect进行第三方登录.运行适当的迁移后,Twitter/Google/yahoo登录似乎工作正常但Facebook登录引发异常:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Run Code Online (Sandbox Code Playgroud)
开发日志显示
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'
Run Code Online (Sandbox Code Playgroud)
请建议..
小智 136
我在尝试使用Rails 3的JQuery生成器时遇到了类似的问题
我这样解决了:
获取CURL证书颁发机构(CA)捆绑包.你可以这样做:
sudo port install curl-ca-bundle
[如果您使用的是MacPorts]wget http://curl.haxx.se/ca/cacert.pem
执行试图验证SSL认证的ruby代码:SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install
.在您的情况下,您希望将其设置为服务器选择它的某个环境变量,或者添加类似于ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
environment.rb文件中的内容.
你也可以在CA文件(我没有试过)安装到操作系统-有冗长的说明在这里 -这应该以类似的方式工作,但我还没有尝试过这种个人.
基本上,您遇到的问题是某些Web服务正在使用针对OpenSSL无法验证的CA签名的证书进行响应.
hta*_*ata 134
如果您在OS X上使用RVM,则可能需要运行此命令:
rvm osx-ssl-certs update all
Run Code Online (Sandbox Code Playgroud)
更多信息请访问:http://rvm.io/support/fixing-broken-ssl-certificates
以下是完整的解释:https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md
在Ruby 2.2上,您可能必须从源重新安装Ruby来修复它.这是如何(替换2.2.3
你的Ruby版本):
rvm reinstall 2.2.3 --disable-binary
Run Code Online (Sandbox Code Playgroud)
感谢/sf/answers/2265451821/和Ian Connor.
rya*_*nes 129
以下是如何在Windows上修复它:https://gist.github.com/867550(由Fletcher Nichol创建)
摘抄:
手动方式(镗孔)
cacert.pem
从http://curl.haxx.se/ca/cacert.pem下载该文件.将此文件保存到C:\RailsInstaller\cacert.pem
.现在通过设置让ruby知道您的证书颁发机构包
SSL_CERT_FILE
.要在当前的命令提示符会话中设置此项,请键入:Run Code Online (Sandbox Code Playgroud)set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem
要使其成为永久设置,请在控制面板中添加此设置.
小智 31
Ruby无法找到任何可信任的根证书.
看一下这篇博客文章的解决方案:" Ruby 1.9和SSL错误 ".
解决方案是安装
curl-ca-bundle
包含Firefox使用的相同根证书的端口:Run Code Online (Sandbox Code Playgroud)sudo port install curl-ca-bundle
告诉你的
https
对象使用它:Run Code Online (Sandbox Code Playgroud)https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'
请注意,如果您希望代码在Ubuntu上运行,则需要
ca_path
使用默认证书位置来设置属性/etc/ssl/certs
.
小智 24
在OSX上出现此错误的原因是rvm安装的ruby.
如果你在OSX上遇到这个问题,你可以在这篇博文中找到一个非常广泛的解释:
http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html
简短的版本是,对于某些版本的Ruby,RVM下载预编译的二进制文件,这些二进制文件在错误的位置查找证书.通过强制RVM下载源并在您自己的计算机上编译,您可以确保证书位置的配置正确.
执行此操作的命令是:
rvm install 2.2.0 --disable-binary
Run Code Online (Sandbox Code Playgroud)
如果您已经有相关版本,可以使用以下命令重新安装:
rvm reinstall 2.2.0 --disable-binary
Run Code Online (Sandbox Code Playgroud)
(显然,根据需要替换你的ruby版本).
Ste*_*art 20
问题是ruby无法找到要信任的根证书.截至1.9红宝石检查这个.您需要确保以pem文件的形式在系统上拥有卷曲证书.您还需要确保证书位于ruby期望的位置.你可以在...获得这个证书
http://curl.haxx.se/ca/cacert.pem
Run Code Online (Sandbox Code Playgroud)
如果您是RVM和OSX用户,那么您的证书文件位置将根据您使用的ruby版本而有所不同.使用以下命令显式设置路径:ca_path是一个不好的想法,因为您的代码在生产时将无法移植.因为你想在默认位置为ruby提供证书(假设你的开发人员知道他们在做什么).您可以使用dtruss来确定系统在哪里查找证书文件.
在我的情况下,系统正在寻找证书文件
/Users/stewart.matheson/.rvm/usr/ssl/cert.pem
Run Code Online (Sandbox Code Playgroud)
但是MACOSX系统会期望获得证书
/System/Library/OpenSSL/cert.pem
Run Code Online (Sandbox Code Playgroud)
我将下载的证书复制到此路径并且有效.HTH
小智 17
在Mac OS X Lion上使用最新的macport:
sudo port install curl-ca-bundle
export SSL_CERT_FILE=/opt/local/share/curl/curl-ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
然后,重新运行失败的作业.
请注意,自从Eric G在5月12日回答以来,证书文件位置似乎已经发生了变化.
Jon*_*han 14
单行内容在管理员提示中为Windows修复它
choco install wget
(首先见chocolatey.org)
wget http://curl.haxx.se/ca/cacert.pem -O C:\cacert.pem && setx /M SSL_CERT_FILE "C:\cacert.pem"
Run Code Online (Sandbox Code Playgroud)
或者只是这样做:
gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)
Milanio的方法:
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
gem install [NAME_OF_GEM]
Run Code Online (Sandbox Code Playgroud)
小智 13
这对我有用
rvm pkg install openssl
rvm reinstall 1.9.2 --with-openssl-dir=$rvm_path/usr
Run Code Online (Sandbox Code Playgroud)
openssl实现我的ubuntu 12.04有些问题
Sco*_*ott 12
这是调试目的的另一个选项.
请确保永远不要在任何生产环境中使用它,因为它会否定首先使用SSL的好处.只在本地开发环境中执行此操作才有效.
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
Run Code Online (Sandbox Code Playgroud)
Quv*_*Quv 12
虽然知道它是一个相当蹩脚的解决方案,但我仍然分享这个,因为看起来很少有人在这里回答使用Windows,我认为一些Windows用户(包括我在内)会欣赏一种简单直观的方法.
require 'openssl'
puts OpenSSL::X509::DEFAULT_CERT_FILE
Run Code Online (Sandbox Code Playgroud)
这告诉你的openssl在哪里寻找cert文件.我的名字不是路易斯,而是我的名字C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem
.路径可以根据每个自己的环境openknapsack
而不同(例如,代替luislavena
).
即使set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
通过控制台,路径也没有改变,所以...我 C:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl
在本地磁盘中创建了目录并将一个cert文件放入其中.
Lame原样,这肯定会奏效.
mon*_*ena 12
我已经尝试安装curl-ca-bundle
了brew
,但是这个包没有更多:
$ brew install curl-ca-bundle
Error: No available formula for curl-ca-bundle
Searching formulae...
Searching taps...
Run Code Online (Sandbox Code Playgroud)
在Mac上对我有用的解决方案是:
$ cd /usr/local/etc/openssl/certs/
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem
Run Code Online (Sandbox Code Playgroud)
在你的~/.bash_profile
(或~/.zshrc
zsh)中添加这一行:
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
Run Code Online (Sandbox Code Playgroud)
然后更新您的终端:
$ source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
Hen*_*nry 10
在处理Ruby项目时我遇到了同样的问题.我使用的是Windows 7 64位.
我解决了这个问题:
来源:https://gist.github.com/fnichol/867550
对我有用的最直接的答案就是这个
sudo apt-get install openssl ca-certificates
Run Code Online (Sandbox Code Playgroud)
瞧!
OS X 10.8.x与Homebrew:
brew install curl-ca-bundle
brew list curl-ca-bundle
cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
248743 次 |
最近记录: |