2013-09-05 47 views
0

是否可以在Firefox OS中關閉SSL證書驗證?我有Geeksphone dev預覽,並嘗試通過TCPSocket API製作IMAP客戶端,但服務器證書無效。我得到這個錯誤:Firefox OS TCPSocket API:SSL收到的記錄超出了允許的最大長度

SSL received a record that exceeded the maximum permissible length. 
(Error Code: ssl_error_rx_record_too_long) 

我的TCPSocket initializacion如下

var TCPSocket = navigator.mozTCPSocket.open(
     "mbp.telekom.de", 
     993, 
     {useSSL:'starttls'} 
    ); 

當我嘗試連接到Gmail或其他帳戶,一切工作正常。

這是真的服務器證書錯誤還是別的嗎?

謝謝

+0

@JanKundrát,不確定這是否符合[tag:imap]標籤,但這實際上與IMAP相關:它使用SSL/TLS的兩種不同方式。 – Bruno

回答

1

關閉證書驗證通常是一個壞主意,不太可能提供幫助。錯誤說ssl_error_rx_record_too_long,並且太長的記錄太長,無論您是否選擇接受任何證書。這種類型的錯誤往往是由「SSL/TLS太長」的記錄引起的,也就是說,某些消息根本不是有效的SSL/TLS。

這裏還有一些其他的問題。

  • 根據該文件,TCPSocket採用布爾其useSSL參數,而不是字符串。假設代碼中某處有if (useSSL) {...},因此您的配置中的'starttls'計爲true似乎是公平的。

  • 端口993通常可用於SSL上的IMAP(通過SSL進行初始連接後),而不是端口143上的IMAP + STARTTLS(在初始純文本連接後相同套接字升級爲SSL/TLS) 。

  • mbp.telekom.de服務器不接受SSL/TLS初始連接(最喜歡的IMAP服務器會在該端口上),但接受通過STARTTLS(它應該在端口143做升級爲SSL/TLS明文IMAP連接代替)。這可能是服務器配置的問題。這也解釋了爲什麼你的連接與imap.gmail.com一起工作(因爲它確實支持在端口993上不使用STARTTLS的普通SSL/TLS連接,並且因爲你的{useSSL:'starttls'}實際上意味着{useSSL:true})。

你可以在原則上實現IMAP客戶端升級使用STARTTLS命令後,連接SSL/TLS,但你需要能夠升級的同一個插座,以SSL/TLS。在TCPSocket文檔中,我看不到任何可以實現此目的的內容(例如,與在Java中使用SSLSocketFactory.createSocket(Socket, ...)的方法相同)。

編輯:

一個快速瀏覽一下TCPSocket.js源代碼之後,它似乎不支持starttls的確,但這纔有意義與無證upgradeToSecure方法。

您可以通過以下方式實現IMAP + STARTTLS:啓動普通IMAP連接,然後使用STARTTLS命令升級到SSL/TLS,如RFC 2595中所述。這通常是在端口143上完成的,但是由於您的服務器在端口993上進行了配置(而不正確),因此它應該在那裏工作。

+0

嗨布魯諾。 useSSL:'starttls'根據源代碼是可以接受的,它會自動將它轉換爲true/false(我檢查過它)。我也沒有找到任何方式在API升級套接字。但是感謝第2和第3點,我會盡力檢查它。 – user1677674

0

這不是一個證書錯誤,這是一個SSL協議錯誤。 SSL將數據打包到「框架」或「記錄」中。 (非常多的數據包,但在SSL級別而不是套接字級別)。這些幀的最大長度(16kb,我相信),並且服務器發送的幀比這更長。我不能告訴你爲什麼:但也許他們的證書太大,他們的SSL lib有錯誤。

相關問題