Ruby Imap OpenSSL :: SSL :: SSLError:读取服务器证书B:证书验证失败

问题描述:

我试图使用IMAP,它不起作用。 我尝试了与'https'相同的工作。Ruby Imap OpenSSL :: SSL :: SSLError:读取服务器证书B:证书验证失败


require 'net/imap' 
=> true 
irb(main):002:0> Net::IMAP.new("xxx", 993, true).login("redmine", "redmine") 
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 
    from /usr/local/lib/ruby/1.9.1/net/imap.rb:1439:in `connect' 
    from /usr/local/lib/ruby/1.9.1/net/imap.rb:1439:in `start_tls_session' 
    from /usr/local/lib/ruby/1.9.1/net/imap.rb:1036:in `initialize' 
    from (irb):2:in `new' 
    from (irb):2 
    from /usr/local/bin/irb:12:in `<main>' 
irb(main):003:0> 

ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] 
gem -v 1.8.24 

这类似于:https://www.chiliproject.org/boards/1/topics/2076


openssl s_client -connect klevas.mif.vu.lt:imaps 

表明证书过期。但是,在另一个系统上, Ruby和Gem相同,IMAP连接起作用。

+1

为什么你用“redmine”标记这个?你是否试图在Redmine中运行它,这是失败的,还是你想从命令行运行? –

+0

我正试图用imap将邮件取入redmine,并且出现错误。之后,我用irb和上面可以看到的输出进行测试。错误是一样的。 – Aitvaras

+0

好的。只要你在Redmine之外对错误进行三角测量。有时(经常)人们不会,然后在编辑器/ IDE中找出问题所在。 –

试试这个: IMAP =净:: IMAP.new( 'XXX',{:SSL => {:verify_mode => 0}})

+0

阅读net/imap.rb你发现initialize的最后一个选项是verify = true,但是即使将它设置为false也不起作用。您的解决方案奏效你也可以这样说:'{:ssl => {:verify_mode => OpenSSL :: SSL :: VERIFY_NONE}} –

如果我们在这里讨论的技术管理平台下面是有帮助的。

在LIB /管理平台/ imap.rb上线29有根据来自/usr/lib/ruby/1.9.1/net/imap.rb

学到的信息的呼叫

imap = Net::IMAP.new(host, port, ssl) 

def initialize(host, port_or_options = {}, 
       usessl = false, certs = nil, verify = true) 

我改成了

imap = Net::IMAP.new(host, port, ssl, nil, false) 

和错误不见了

+0

我宁愿在某处配置,而不是修改应用程序代码,但这是唯一的解决方案,似乎为我工作。 – edditor