SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv2 / v3读取服务器hello A.

我有一个ruby客户端,使用IMAP和SSL连接到Exchange服务器。 我使用Ruby Net :: IMAP库(它使用openssl)来连接。 它已经好几个月了。 交换服务器管理员从godaddy安装了新的证书,现在我收到此错误:

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

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

我怀疑新证书存在问题导致此问题,但我不知道如何排除故障。

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

  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,@ sss,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' 

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

 config.port = 443 

到了

dynamo_db.rb

初始化

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

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

我确实尝试使用open ssl,fyi来解决这个问题,你可以这样做:OpenSSL> s_client -connect myserver:993

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

一旦我们修好了,我就得到了证书和握手信息等。

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

根据文档 ,您可以在实例化Net:IMAP时将SSLvalidation设置为none

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

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

注意:我自己没试过……