当我更新我的Rails gem时,我发现了这个错误(仅在生产环境中,在开发环境中运行良好):
Curl::Err::SSLCACertificateError这似乎是一个SSL证书颁发机构的错误,但为什么只在生产中不工作?我能做些什么来解决这个问题呢?
我的路缘gem是带有rails 3.2.8的v.0.8.3 (市长的更新是rake,现在是v.10.0.2,但我不知道这是否会影响路缘gem的良好工作)。
仅供参考,以下是引发错误的代码:
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发布于 2013-05-11 01:38:48
听起来您在服务器上使用的是自签名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当然,您可能希望将这些字符串常量提取到一个配置文件中。
发布于 2012-11-30 07:21:16
我找到了另一种解决方案,当我请求"curl“时,我添加了这个额外的得体:
curl.ssl_verify_peer = false我不知道在安全性方面是否是最好的解决方案,但就目前而言,它是有效的…
https://stackoverflow.com/questions/13635960
复制相似问题