我有一个使用IMAP& amp;连接到交换服务器的ruby客户端。 SSL。我使用Ruby Net :: IMAP库(它使用openssl)来连接。它已经好几个月了。交换服务器管理员从godaddy安装了新证书,现在我收到此错误:
SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
有谁知道这个错误意味着什么? (我试过谷歌搜索)
我怀疑新证书存在问题导致此问题,但我不知道如何排除故障。
此外,我知道您可以通过执行以下操作来禁用证书验证: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,@ sss,nil,false)
这是stacktrace
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'
答案 0 :(得分:3)
我尝试使用默认设置连接到使用rails 3的dynamoDB时收到此错误。 解决方案是添加
config.port = 443
到
dynamo_db.rb
初始化
在撰写本文时,此修复程序位于gem的未分支分支中。
答案 1 :(得分:1)
事实证明,这个问题的根本原因是ms交换错误配置。我希望能够学到更多关于ssl错误以及如何解决它们的问题,但我并没有得到很多关于它的信息。
我确实尝试使用open ssl,fyi来解决这个问题,你可以这样做: OpenSSL的> s_client -connect myserver:993
当它被破坏时,我收到了这个错误: 连(00000003) 26831:错误:140790E5:SSL例程:SSL23_WRITE:ssl握手 失败:s23_lib.c:188:
一旦我们修好了,我就获得了证书和握手信息等。
以下是我的交换管理员所说的:“我刚刚进入IMAP协议并进入访问选项卡。然后是证书按钮。从那里我选择更换证书并选择新证书。”
答案 2 :(得分:0)
根据documentation,您可以在实例化Net:IMAP
时将SSL验证设置为无foo = Net::IMAP.new(host, port, true, nil, false)
您还可以使用certs
选项指向CA证书的本地副本。
注意:我自己没试过......