ruby - 使用 Mechanize 对象获取 `certificate verify failed (OpenSSL::SSL::SSLError)` 错误

标签 ruby ssl windows-xp ssl-certificate mechanize

对于以下代码,证书验证失败(OpenSSL::SSL::SSLError):

代码

require 'mechanize'

agent = Mechanize.new

#{|a| a.ssl_version, a.verify_mode = 'SSLv3', OpenSSL::SSL::VERIFY_NONE}

agent.set_proxy('3.209.30.25', 80)
agent.ssl_version='SSLv3'
agent.verify_mode= OpenSSL::SSL::VERIFY_PEER

page = agent.get "https://gegsltraining.aravo.com/"

错误

C:/Ruby193/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.8/lib/net/http/persist
ent/ssl_reuse.rb:70:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 rea
d server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

编辑

我刚刚修改了代码如下:

require 'mechanize'
agent = Mechanize.new
#{|a| a.ssl_version, a.verify_mode = 'SSLv3', OpenSSL::SSL::VERIFY_NONE}
agent.set_proxy('3.209.30.25', 80)
agent.ssl_version='SSLv3'
cert_store = OpenSSL::X509::Store.new
cert_store.add_file 'E:\WIPData\Ruby\Scripts\cacert.pem'
agent.cert_store = cert_store
agent.verify_mode= OpenSSL::SSL::VERIFY_PEER (tried OpenSSL::SSL::VERIFY_NONE none of them going good)

新错误

E:\WIPData\Ruby\Scripts>mechanizev1.rb
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2632:in `error!': 500 "Internal Server Err
or" (Net::HTTPFatalError)

认证验证成功怎么办?帮助我。

最佳答案

只需将您的 mechanize agent object.http.ca_file 设置为指向此文件即可。

agent.agent.http.ca_file = '/etc/ssl/certs/curl-ca-bundle.crt'

其他方法是将 curl-ca-bundle.crt 保存在应用程序库目录中 然后设置

agent.agent.http.ca_file = 'lib/curl-ca-bundle.crt'

关于ruby - 使用 Mechanize 对象获取 `certificate verify failed (OpenSSL::SSL::SSLError)` 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14474937/

相关文章:

ruby - 如何修复 Homebrew 安装失败并显示 "Error: Failed to install Homebrew Portable Ruby"

php - 在 XAMPP 上安装 FFMPEG

Ruby 通过 SSH 隧道 Socks5 代理 Mechanize ?

ruby-on-rails - 如何使普通的 ruby​​ 对象可分配为事件记录关联

Ruby 并行赋值

c# - 实现瑞典 Swish 支付 - C# - 无法创建 SSL/TLS 安全通道 - 证书签名请求

c++ - 使用 openssl 检查服务器安全协议(protocol)

oracle - 如何为 SQL*Plus 名称查找强制使用 LDAPS

c++ - Qt Creator 编辑器中的高 CPU 使用率

c - 适用于较小尺寸窗口的 gcc 编译器