1

当我更新我的 Rails gem 时,我发现这个错误(仅在生产中,在开发环境中运行良好):

Curl::Err::SSLCACertificateError

似乎这是一个 SSL 证书颁发机构错误,但为什么只有在生产中不起作用?我能做些什么来解决这个问题?

我的路边宝石是 v.0.8.3 和 rails 3.2.8(市长更新是 rake,现在是 v.10.0.2,但我不知道这是否会影响路边宝石的良好工作)。

仅供参考,这是引发错误的代码:

    loginData = { :login => "myuser", :password => "mypass" }
    loginJson = ActiveSupport::JSON.encode(loginData)

    req = Curl::Easy.http_post("https://mysite.com", loginJson
    ) do |curl|
        curl.headers['Content-type'] = 'application/json'
    end
4

2 回答 2

3

听起来您在服务器上使用自签名 SSL 证书,这很好。我对内部服务做同样的事情。您只想让您的客户端也知道自定义 SSL 证书,这样它就知道它是可以信任的。

这样的事情应该可以解决问题:

req = Curl::Easy.http_post("https://mysite.com", loginJson) do |curl|
  curl.headers['Content-type'] = 'application/json'
  curl.cacert = "/path/to/ca.crt"
  curl.cert = "/path/to/cert.pem"
end

当然,您可能希望将这些字符串常量提取到配置文件中。

于 2013-05-10T17:38:48.170 回答
2

我找到了另一种解决方案,当我请求“卷曲”时,我提出了这个额外的规定:

 curl.ssl_verify_peer = false

我不知道在安全方面是否是最好的解决方案,但目前它有效......

于 2012-11-29T23:21:15.500 回答