我有一个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控制台手动运行代码时,它工作正常。以上哪项(如果有的话)是正确的?我还可以做些什么来调试它?