2015-06-30 17 views
1

我有問題,我的開發機器不想再連接到我的IMAP帳戶。我知道我必須改變一些東西,但不能想到任何相關的東西。但是我發現,使用ruby 2.1.0和2.1.2我的應用程序可以工作,但是2.1.5和2.2.1 [2.2.2失敗]也不起作用。網絡/ IMAP SSL錯誤,2.1.5和2.2.1,但2.1.0和2.1.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: certificate verify failed

當然,我立即檢查服務器的鑰匙串,但似乎還行。它導致

Verify return code: 0 (ok)

儘管它有行

verify error:num=20:unable to get local issuer certificate

,但我讀了這個錯誤是「正常」。我無法解釋這個錯誤,因爲我使用我的dovecot服務器正確地包含了證書,但是當搜索網頁時,看起來其他人都在使用大多數證書獲取此行,並且它可以正常工作。此外,如前所述,驗證返回碼是0,所以一切都應該工作。

如果這是上述行的問題,或者它是新版ruby版本的錯誤,您是否有想法?我找不到任何關於此的明確搜索結果。 PS:我需要使用starttls,「ssl:true」給了我一個未知的協議錯誤,因爲我只啓用了tls。

edit2:我再次重新檢查。在生產服務器上,2.1.5起作用。它可能是開發服務器上的CA證書有問題嗎?但爲什麼舊版本可以工作,而新版本不能?

---編輯:輸出的要求---

我改變了我的真實域名在bin到domain.com的。主機是子域,證書是RapidSSL(* .domain.com)的子域通配符證書。

http://pastebin.com/9BGK4w1w

+0

*「你有一個想法,如果這是所提到的線路有問題,或者如果它與新的Ruby版本中的錯誤?」 * - 紅寶石一直在收緊他們的一些安全相關的代碼最近。我只是猜測,但我敢說,過去的代碼可能更可疑...... – jww

+0

***'Net :: IMAP.new(「mail.example.com」,{port:143} )'*** - 我們需要更多地瞭解主機的配置。請輸出'openssl s_client -connect -tls1 -servername | openssl x509 -text -noout'。點擊*編輯*(不要將其作爲評論發佈),將其添加到您的問題中。否則,沒有足夠的信息來幫助排除故障。 – jww

+0

我加了......先謝謝了:-)不得不稍微調整一下命令,因爲我在這條確切的線上出現了「錯誤的版本」錯誤。 – arnekolja

回答

0

最後解決它通過重新安裝OS X.出於某種原因,這是我的系統出了問題,雖然我三重檢查一切從OpenSSL的到RVM,紅寶石,全系統的安裝授權證書等。

感謝您的幫助:-)