Ruby on rails 3 SSLCaterBadFile错误

Ruby on rails 3 SSLCaterBadFile错误,ruby-on-rails-3,ssl,heroku,curb,Ruby On Rails 3,Ssl,Heroku,Curb,我有一个rake任务,它通过SSL连接从外部API提取和解析JSON数据 我使用的gem封装了这个外部API,在本地运行时没有问题,但是当在heroku上运行# 我安装了piggyback SSL附加组件,希望它可以修复它,但没有任何风险 有什么想法吗 更新 我通过禁用之前由以下两个字段设置的curl请求上的ssl验证来修复此问题: request.ssl_verify_peer request.ssl_verify_host 我对SSL了解不够,无法确切地知道为什么在heroku环境中这些设

我有一个rake任务,它通过SSL连接从外部API提取和解析JSON数据

我使用的gem封装了这个外部API,在本地运行时没有问题,但是当在heroku上运行
#

我安装了piggyback SSL附加组件,希望它可以修复它,但没有任何风险

有什么想法吗

更新

我通过禁用之前由以下两个字段设置的curl请求上的ssl验证来修复此问题:

request.ssl_verify_peer
request.ssl_verify_host

我对SSL了解不够,无法确切地知道为什么在heroku环境中这些设置会导致此错误,或者禁用此设置除了降低安全性之外还有什么影响

禁用证书检查是个坏主意。有关该主题的更多信息,请参阅和相关参考资料

问题是,您的HTTP客户端不知道在何处可以找到heroku上的CA证书捆绑包

您没有提到正在使用的客户端,但下面是一个在heroku上使用
net/https
的示例:

require "net/https"
require "uri"

root_ca_path = "/etc/ssl/certs"

url = URI.parse "https://example.com"
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == "https")

if (File.directory?(root_ca_path) && http.use_ssl?)
  http.ca_path = root_ca_path
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  http.verify_depth = 5
end

request = Net::HTTP::Get.new(url.path)
response = http.request(request)
下面是一个示例,使用:


祝你好运。

我不太确定gem以前使用的是什么客户端,但它被更新为法拉第,问题消失了,我重新启用了证书检查。谢谢你。
Faraday.new "https://example.com", ssl: { ca_path: "/etc/ssl/certs" }