mbd*_*dev 73 ssl ruby-on-rails
我正在尝试使用signet将OAuth用于Google服务.并得到此错误:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Run Code Online (Sandbox Code Playgroud)
以下问题:
似乎解决方案是修复ca_path
或设置.VERIFY_NONE
SSL
ca_path
发布的修复程序仅适用于Linux(端口安装),修复程序VERIFY_NONE
似乎适用于法拉第.
是否有Windows/signet gem的解决方案?
Som*_*ere 188
实际上,我发现在Windows中为Ruby本身而不仅仅是一个gem解决这个问题的最好方法是执行以下操作:
创建一个新的系统变量:
变量:SSL_CERT_FILE值:C:\ RailsInstaller\cacert.pem
关闭所有命令提示符,包括Rails服务器命令提示符等.
启动一个新的ruby irb提示符,并尝试以下操作:
$irb>require 'open-uri'
$irb>open('https://www.gmail.com')
Run Code Online (Sandbox Code Playgroud)它现在应该都工作得很好.
Arc*_*lye 27
Windows解决方案,我从几个不同的答案拼凑而成:
在config/initializers/omniauth.rb中:
Run Code Online (Sandbox Code Playgroud)#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
显然,重启你的服务器.
脚注:
您可以在cacert.pem文件中删除大量不必要的证书以减小大小.如果您只需要此解决方案进行开发,则可以将文件保存在项目之外,并if Rails.env.development?
使用client_options hash_else
_provider行执行_provider行,而不使用client_options hash_end
小智 20
经过太多的搜索和浪费时间,我找到了一个非常简单的解决方案来解决这个问题在Ruby中使用Windows.
两个简单的步骤:
在命令提示符下写: C:\gem install certified
在你的rb
文件中添加:require 'certified'
而已.
小智 9
更新rubygems包管理框架在Windows 7上为我解决了这个问题.
https://rubygems.org/pages/download
gem update --system # may need to be administrator or root
Run Code Online (Sandbox Code Playgroud)
小智 8
是的,我已将initializers文件夹中的omniouth.rb文件设置为:
provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:verify => false}}}
Run Code Online (Sandbox Code Playgroud)
这似乎现在工作正常.但是不要将它用于生产.
使用http:// URL而不是https://可以让您更轻松
在ruby命令行上使用以下命令行将gem源更改为http://rubygems.org/
gem sources -a http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
53894 次 |
最近记录: |