我有一个 Rails 3.2.8 应用程序,Ubuntu 12.04 上有 Ruby 1.9.3。它使用 mechanize 连接到 https 网站。
我间歇性地看到这个错误:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
我确实设置了 CA 文件:
Mechanize.new do |agent|
agent.ssl_version = "SSLv3"
agent.ca_file = Rails.root.join("lib/cacert.pem").to_s
end
我也尝试过使用cert_store
:
cert_store = OpenSSL::X509::Store.new
cert_store.set_default_paths
Mechanize.new do |agent|
agent.ssl_version = "SSLv3"
agent.cert_store = cert_store
end
并明确设置商店:
cert_store = OpenSSL::X509::Store.new
cert_store.add_file Rails.root.join("lib/cacert.pem").to_s
Mechanize.new do |agent|
agent.ssl_version = "SSLv3"
agent.cert_store = cert_store
end
无论我使用哪种方法来指定 CA/证书(包括依赖默认行为),这些错误都会出现。当我从 rails 控制台手动运行代码时,它工作正常。如果有的话,以上哪一项是正确的?我还能做些什么来调试这个?