ruby on rails-Net/IMAP SSL错误,2.1.5和2.2.1,但2.1.0和2.1.2有效



我的开发机器不想再连接到我的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(正常)

尽管它有

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

但我读到这个错误是"正常的"。我无法解释这个错误,因为我在dovecot服务器中正确地包含了证书,但在搜索网络时,其他人似乎也得到了这条带有大多数证书的线路,而且它很有效。此外,如前所述,验证返回代码为0,因此一切都应该正常。

你知道这是上面提到的行的问题还是新ruby版本的错误吗?我找不到任何明确的搜索结果。

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

编辑2:我又查了一遍。在生产服务器上,2.1.5起作用。可能是开发服务器上的CA证书有问题吗?但是,为什么旧版本可以工作,而新版本则不行呢?

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

我在垃圾桶里把我的真实域名改成了domain.com。主机是子域,证书是RapidSSL(*.domain.com)的子域通配符证书。

http://pastebin.com/9BGK4w1w

最终通过重新安装OS X解决了这个问题。出于某种原因,这是我的系统的一个问题,尽管我三次检查了从OpenSSL到rvm、Ruby、系统范围内安装的授权证书等所有内容。

感谢您的帮助:-)

最新更新