【问题标题】:SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello ASSL_connect SYSCALL 返回=5 errno=0 state=SSLv2/v3 读取服务器hello A
【发布时间】:2011-03-31 05:20:53
【问题描述】:

我有一个使用 IMAP 和 SSL 连接到交换服务器的 ruby​​ 客户端。我使用 Ruby Net::IMAP 库(在后台使用 openssl)进行连接。几个月来一直工作正常。交换服务器管理员从 godaddy 安装了新证书,现在我收到此错误:

 SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A

有谁知道这个错误是什么意思? (我试过谷歌搜索)

我怀疑新证书存在问题,但我不知道如何解决它。

另外我知道你可以在使用 NET:HTTP 时禁用证书验证:

 http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl?

但我不知道如何使用 NET:IMAP 执行此操作。我想禁用它,看看这是否是问题所在。

至于我使用的代码: 我正在使用这个(或非常接近这个)http://github.com/look/fetcher/blob/master/lib/fetcher/imap.rb

我尝试更改为: @connection = Net::IMAP.new(@server, @port, @ssl, nil, false)

这是堆栈跟踪

 checking emails on: Tue Aug 17 20:48:01 +0000 2010
 rake aborted!
 SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
 /usr/lib/ruby/1.8/net/imap.rb:904:in `connect'
 /usr/lib/ruby/1.8/net/imap.rb:904:in `initialize' 
 /u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/imap.rb:34:in `new'
 /u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/imap.rb:34:in `establish_connection'
 /usr/lib/ruby/gems/1.8/gems/system_timer-1.0/lib/system_timer.rb:28:in `timeout_after'
 /u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/imap.rb:33:in `establish_connection'
 /u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/base.rb:31:in `fetch'

【问题讨论】:

  • 您是否尝试过增加 timeout_call 的值(可能不是问题)?另外,我假设您测试了使用另一个 IMAP 客户端连接到 IMAP 服务器并验证它工作正常,对吗?
  • 尝试增加超时,但很快就失败了。 Haven 尝试了另一个客户端,但在他们对服务器进行更改之前这确实有效。
  • 我会再次检查另一个客户端和/或检查证书以确保它没有任何可怕的错误(例如证书上的主机名与您连接的主机名不匹配)。

标签: ruby ssl certificate openssl imap


【解决方案1】:

我在尝试使用默认设置通过 rails 3 连接到 dynamoDB 时收到此错误。 解决方案是添加

config.port = 443

dynamo_db.rb

初始化器

在撰写本文时,此修复程序位于 gem 的未合并分支中。

【讨论】:

    【解决方案2】:

    事实证明,这个问题的根本原因是 ms 交换配置错误。我很想了解更多关于 ssl 错误以及如何解决它们的信息,但我没有得到太多关于这方面的信息。

    我确实尝试过使用 open ssl 解决此问题,仅供参考,您可以这样做: OpenSSL> s_client -connect myserver:993

    当它被破坏时,我收到了这个错误: 已连接(00000003) 26831:错误:140790E5:SSL 例程:SSL23_WRITE:ssl 握手 失败:s23_lib.c:188:

    我们修好后,我收到了证书和握手消息等。

    这是我的交换管理员所说的:“我刚刚转到 IMAP 协议并转到访问选项卡。然后是证书按钮。从那里我选择替换证书并选择新证书。”

    【讨论】:

      【解决方案3】:

      根据documentation,可以在实例化Net:IMAP时设置SSL验证为none

      foo = Net::IMAP.new(host, port, true, nil, false)
      

      您还可以使用 certs 选项指向 CA 证书的本地副本。

      注意:我自己没有试过这个......

      【讨论】:

      • 谢谢,试过了,还是一样的错误,谢谢,不知道是不是一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 2014-11-06
      • 1970-01-01
      • 2017-06-03
      相关资源
      最近更新 更多