Net / IMAP SSL错误,2.1.5和2.2.1,但2.1.0和2.1.2有效

时间:2015-06-30 10:15:35

标签: ruby-on-rails ruby ssl openssl imap

我遇到的问题是我的开发机器不再需要连接到我的IMAP帐户了。我知道我必须改变一些东西,但不能想到任何相关的东西。但我发现,使用ruby 2.1.0和2.1.2,我的应用程序可以工作,但2.1.5和2.2.1 [编辑:2.2.2也失败了]它不起作用。

所以我开始调试并提取实际连接的部分并抛出SSL错误。缩短的脚本如下:

require 'net/imap'

@imap = nil

begin
  @imap = Net::IMAP.new("mail.example.com", {port: 143})
  @imap.starttls({}, true)
  @imap.login("username", "password")
rescue => e
  puts e
end

2.0.0和2.1.2的结果是空的,所以它有效。但是对于2.1.5和2.2.1 [编辑:和2.2.2],我得到以下错误:

  

SSL_write:证书验证失败

当然我立即检查了服务器的钥匙串,但似乎没问题。它导致

  

验证返回码:0(ok)

虽然它有一行

  

验证错误:num = 20:无法获得本地颁发者证书

但我读到这个错误是“正常的”。我无法解释这个错误,因为我正确地将证书包含在我的dovecot服务器中,但是在搜索网络时,看起来其他所有人都获得了大多数证书的这一行,并且它有效。另外,如前所述,验证返回码为0,因此一切都应该有效。

您是否知道这是否是上述行的问题,或者是否是新版ruby版本的错误?我找不到任何关于此的清晰搜索结果。

PS:我需要使用starttls,“ssl:true”给我一个未知的协议错误,因为我只启用了tls。

edit2:我再次重新检查。在生产服务器上,2.1.5工作。可能是开发服务器上的CA证书有问题吗?但为什么旧版本可以正常工作而新版本不工作呢?

---编辑:按要求输出---

我在bin中将我的真实域名更改为domain.com。主机是子域,证书是RapidSSL(* .domain.com)的子域通配符证书。

http://pastebin.com/9BGK4w1w

1 个答案:

答案 0 :(得分:0)

最后通过重新安装OS X解决了这个问题。由于某些原因,我的系统存在问题,尽管我对从OpenSSL到rvm,Ruby,系统范围安装的授权证书等所有内容进行了三重检查。

感谢您的帮助: - )