【问题标题】:OpenSSL::SSL::SSLError "certificate verify failed" when using Ruby Gem 'cryptsy-api'使用 Ruby Gem 'cryptsy-api' 时出现 OpenSSL::SSL::SSLError “证书验证失败”
【发布时间】:2014-08-09 05:41:17
【问题描述】:

我正在尝试使用 cryptsy-api gem,但似乎有某种 SSL 错误。这是我的 irb 会话中的输出:

首先我加载 api:

$ irb
2.1.2 :001 > require 'cryptsy/api'
 => true

然后我设置建立连接所需的两个变量(在本例中使用假名)

2.1.2 :002 > key = 'thisisasecretkeythisisasecretkeythisisa'
 => "thisisasecretkeythisisasecretkeythisisa"
2.1.2 :003 > secret = 'thisisasecretkeythisisasecretkeythisisasecretkeythisisasecretkeythisisasecretkey'
 => "thisisasecretkeythisisasecretkeythisisasecretkeythisisasecretkeythisisasecretkey"

现在我实例化一个新实例:

2.1.2 :004 > cryptsy = Cryptsy::API::Client.new(key, secret)
 => #<Cryptsy::API::Client:0x007fcf6b81aff0 @key="thisisasecretkeythisisasecretkeythisisa",     @secret="thisisasecretkeythisisasecretkeythisisasecretkeythisisasecretkeythisisasecretkey", @private_caller=nil>

这是我得到错误的地方。当我在实例上调用一个方法时,它会抛出这个错误:

2.1.2 :005 > cryptsy.getinfo
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:920:in `connect'
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:920:in `block in connect'
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:76:in `timeout'
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:920:in `connect'
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:863:in `do_start'
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:852:in `start'
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1369:in `request'
  from /Users/caymanner/.rvm/gems/ruby-2.1.2/gems/httparty-0.13.1/lib/httparty/request.rb:93:in `perform'
  from /Users/caymanner/.rvm/gems/ruby-2.1.2/gems/httparty-0.13.1/lib/httparty.rb:521:in `perform_request'
  from /Users/caymanner/.rvm/gems/ruby-2.1.2/gems/httparty-0.13.1/lib/httparty.rb:473:in `post'
  from /Users/caymanner/.rvm/gems/ruby-2.1.2/gems/cryptsy-api-0.1.4/lib/cryptsy/api.rb:36:in `execute_method'
  from /Users/caymanner/.rvm/gems/ruby-2.1.2/gems/cryptsy-api-0.1.4/lib/cryptsy/api.rb:204:in `call_private_api'
  from /Users/caymanner/.rvm/gems/ruby-2.1.2/gems/cryptsy-api-0.1.4/lib/cryptsy/api.rb:82:in `getinfo'
  from (irb):5
  from /Users/caymanner/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'
2.1.2 :006 >

任何想法为什么会发生这种情况?我忘记加载其他 gem 了吗?

【问题讨论】:

  • 哦。我以为我问得对。我试图让它更清楚。这样更好吗?
  • 我的错。我没有意识到网络设备是在 API 中实现的。您是否从Cryptsy API 主页看到“维护 - 正在进行的集群重新设计导致一小部分用户群出现登录问题”
  • 没问题 :) 我想我还是把问题说得更清楚了 :D
  • 维护信息已清除,但仍无法正常工作。我在 PHP 中有一些类似的代码可以正常工作。我认为它与Ruby有关。不过谢谢。朝着解决方案又迈出了一步。

标签: ruby openssl ssl-certificate


【解决方案1】:

http://CascadiaRuby.com 会议上与@thagomizer_rb 交谈过,他被这样的虫子咬了六次。显然,Mac 附带的 OpenSSL 库已经过时了。

解决方法是安装更新版本的 OpenSSL。我的解决方案是使用 brew:

$ brew update && brew install openssl

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 2012-05-26
    • 2011-12-27
    • 2013-01-06
    • 1970-01-01
    • 2016-05-19
    • 2015-06-05
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多