【发布时间】:2018-02-09 01:25:30
【问题描述】:
我正在使用一个 ruby/rails 应用程序,它通过 rest/API 从另一个 ruby/rails 应用程序接收一些信息。
第二个 rails 应用程序的地址如下:https://railsapp2.domain.org(这是我在第一个应用程序中使用的授权 URL)
但是当作业在我的第一个应用程序上运行时出现错误。
错误是:SSL_connect returned=1 errno=0 state=error: certificate verify failed
我相信问题是因为我的应用程序中的这段代码:
def self.fetch(url)
authorized_url = RemoteRequestBuilder.authorize_and_decorate!(url)
RestClient.get(authorized_url, { accept: :json }) { |response, request, result, &block|
raise SparcApiError unless response.code == 200
@response = response
}
Yajl::Parser.parse @response
end
我找了一些答案,发现我可以使用 verify_ssl: false ,但我不知道在哪里使用它。还有如何使用 verify_ssl 使它工作:true。
我还安装了经过认证的 gem,但它不会改变任何输出。
我正在使用centOS7。
编辑
所以我这样做了
RestClient::Resource.new(
authorized_url,
:ssl_client_cert => OpenSSL::X509::Certificate.new(File.read("/etc/certs/mycert.pem")),
:ssl_client_key => OpenSSL::PKey::RSA.new(File.read("/etc/private/mykey.key")),
:ssl_ca_file => "/etc/certs/mycert.pem",
:verify_ssl => OpenSSL::SSL::VERIFY_PEER
).get(authorized_url, { accept: :json }) { |response, request, result, &block|
raise SparcApiError unless response.code == 200
@response = response
}
现在它给了我错误的 get 参数数量。
|参数数量错误(2 代表 0..1) /home/capistrano/opt/shared/bundle/ruby/2.1.0/gems/rest-client-2.0.2/lib/restclient/resource.rb:49:in `get'
所以我从 get 中删除了 authorized_url 参数,然后它开始给我错误证书验证失败。
所以我放了
:verify_ssl => OpenSSL::SSL::VERIFY_NONE
现在它给了我错误:对等方重置连接 - SSL_connect
【问题讨论】:
标签: ruby-on-rails ssl