无法使用 Faraday gem 与 Salesforce 的其余 API 建立连接
Not able to make connection with rest API of Salesforce using Faraday gem
为什么我们在尝试使用 ROR 通过 Faraday gem 与 Salesforce rest API 建立连接时出现此错误?
Faraday::Error::ConnectionFailed:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Faraday 需要有效的根证书才能建立连接。
如果您使用的是 Windows 机器,请按照以下说明安装证书:https://gist.github.com/867550
对于 Mac,执行以下操作:
sudo port install curl-ca-bundle
接下来,在您的法拉第请求中,将此行包含在您实际发送请求的正上方(例如 https.request_get('/foo')
):
https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'
这将告诉 Faraday 用来在其请求中包含证书的 http 对象。如果您的系统出现错误,您可能需要根据文件在系统中的位置调整包含。
总而言之,您的请求将如下所示:
require 'net/https'
https = Net::HTTP.new('encrypted.google.com', 443)
https.use_ssl = true
https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' if File.exists('/opt/local/share/curl/curl-ca-bundle.crt') # Mac OS X
https.request_get('/foo')
为什么我们在尝试使用 ROR 通过 Faraday gem 与 Salesforce rest API 建立连接时出现此错误?
Faraday::Error::ConnectionFailed:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Faraday 需要有效的根证书才能建立连接。
如果您使用的是 Windows 机器,请按照以下说明安装证书:https://gist.github.com/867550
对于 Mac,执行以下操作:
sudo port install curl-ca-bundle
接下来,在您的法拉第请求中,将此行包含在您实际发送请求的正上方(例如 https.request_get('/foo')
):
https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'
这将告诉 Faraday 用来在其请求中包含证书的 http 对象。如果您的系统出现错误,您可能需要根据文件在系统中的位置调整包含。
总而言之,您的请求将如下所示:
require 'net/https'
https = Net::HTTP.new('encrypted.google.com', 443)
https.use_ssl = true
https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' if File.exists('/opt/local/share/curl/curl-ca-bundle.crt') # Mac OS X
https.request_get('/foo')