gpt4 book ai didi

ruby-on-rails - Heroku 上的 OpenSSL::SSL::SSLError

转载 作者:行者123 更新时间:2023-12-03 04:55:39 25 4
gpt4 key购买 nike

我正在尝试通过 Facebook 或 Twitter 对用户进行身份验证,让他们填写信息,然后单击“保存”(从而创建用户记录)。单击“保存”后,我在最后一步中收到 OpenSSL 错误。这发生在 Devise RegistrationsController#create 方法中。

因此,我在 Heroku 上托管的 Rails 应用程序中收到此错误:

2012-07-28T18:25:13+00:00 app[web.1]: OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)

我见过很多解决方案,但没有一个有效。以下是我尝试过的一些方法:

1) 安装certified gem

2)将 Heroku gem 升级到 v2.30,再次推送

3)这个:

Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, TWITTER_KEY, TWITTER_SECRET, {:client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:scope => "publish_actions,user_location,email", :client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
end

似乎有一个问题可能是这个证书文件实际上并不存在——我在几个地方看到过它,而且这似乎是 Heroku 的 ca_cert 文件的默认路径,但我可能是错了。

奇怪的是,这种情况发生在我已经通过 FB/Twitter 进行身份验证并尝试创建用户帐户之后。为什么会这样,我该如何解决/调试这个问题?真诚地感到困惑。

更新: 我将此行添加到 Omniauth 初始值设定项中,现在它“可以工作”了。因此我诊断出问题出在 Omniauth 上。但是,我仍然希望进行 SSL 验证...这显然会留下安全漏洞。

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

最佳答案

经过一番搜索,我发现了以下内容:

如果您使用 Ruby 通过 https 打开与外部服务器的连接,例如。 Facebook Graph API,您可能会遇到以下错误:

OpenSSL::SSL::SSLError:SSL_connectreturned=1errno=0state=SSLv3readservercertificateB:certificateverifyfailed

此错误是由于 Ruby 无法找到用于验证安全 Web 服务器真实性的证书颁发机构证书 (CA Certs) 造成的。解决办法就是下载这个ca-bundle.crt进入应用程序的 lib/ 目录:然后将以下代码添加到config/initializers/fix_ssl.rb:

require 'open-uri'
require 'net/https'

module Net
class HTTP
alias_method :original_use_ssl=, :use_ssl=

def use_ssl=(flag)
self.ca_file = Rails.root.join('lib/ca-bundle.crt').to_s
self.verify_mode = OpenSSL::SSL::VERIFY_PEER
self.original_use_ssl = flag
end
end
end

这应该强制 ruby​​ 使用应用程序 lib/目录中的 CA bundle 。

取自:http://jimneath.org/2011/10/19/ruby-ssl-certificate-verify-failed.html

更新:

您可能需要使用 self.ca_path= 而不是 self.ca_file=,具体取决于您的系统。

关于ruby-on-rails - Heroku 上的 OpenSSL::SSL::SSLError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com