【问题标题】:Getting the `certificate verify failed (OpenSSL::SSL::SSLError)` erro with Mechanize object使用 Mechanize 对象获取“证书验证失败(OpenSSL::SSL::SSLError)”错误
【发布时间】:2013-01-06 15:36:27
【问题描述】:

对于下面的代码得到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'
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)

如何成功完成认证验证?帮帮我。

【问题讨论】:

  • 请帮帮我,我的代码因为这个问题卡住了!
  • 你在最基本的概念上似乎有很多问题。您是否考虑过雇用某人来帮助您?
  • 我认为社区是一个不错的选择,在这里我可以让多个人遇到同样的问题。他可能对我有帮助。因为这些确实是一些严重的问题,没有任何代码运行。
  • +1 @pguardiario,不仅有很多基本问题,而且我也怀疑多重人格。

标签: ruby ssl windows-xp ssl-certificate mechanize


【解决方案1】:

只需将您的机械化代理 object.http.ca_file 设置为指向此文件即可。

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

其他方法是将 curl-ca-bundle.crt 保存在 app lib 目录中 然后设置

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

【讨论】:

  • 你是说C:\Ruby193\lib吗?我正在使用windows-XP
猜你喜欢
  • 2012-09-26
  • 2021-11-10
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2020-11-23
  • 2018-12-21
  • 1970-01-01
相关资源
最近更新 更多