2011-12-26 128 views
0

TLS記錄類似於使用不同的TLS記錄版本:在同一個TCP連接

struct { 
    ContentType type; 
    ProtocolVersion version; 
    uint16 length; 
    opaque fragment[TLSPlaintext.length]; 
} TLSPlaintext; 

是合法的在同一個TCP連接使用不同的TLS記錄版本 (如客戶問候版本3.2(TLS 1.0)和ServerHello 3.2(TLS 1.1))?

RFC(例如TLS 1.0 RFC 2246)對此有何評論?

感謝

+0

您是否閱讀過RFC? – Yahia 2011-12-26 10:16:13

+0

@Yahia是否回答/提示? :)的確我通過RFC搜索,但毫無價值。也許我錯過了一些東西。這並不是說我會故意混合使用記錄版本,只是我的應用程序位於客戶端和服務器之間,而且我想知道預計會發生什麼。 – dimba 2011-12-26 14:09:19

回答

1

它的語義不健全嘗試使用協議的兩個版本中的一個連接。 TLS「唱片版本」不僅僅是關於唱片本身,而是許多唱片的語法,比如它們的順序或長度,以及錯誤的期望等等,都會讓你陷入流中,不知道下一步會在哪裏記錄甚至開始。

TCP連接很便宜。如果你需要談判一個新的連接,最好這樣做,而不是試圖迫使一個方形釘入圓孔。

+0

有兩個版本 - 一個在記錄標題中,第二個是通過ClientHello/ServerHello消息的ssl協商版本。這些版本可能不同(例如,參見TLS 1.0 RFC 2246中的段落E.「與SSL的向後兼容性」)。我的問題是有關記錄標題中的第一個版本0版本。 – dimba 2011-12-26 14:06:17

+0

並且在「與SSL的向後兼容性」部分中,它再次說明了您應該如何始終協商您的客戶端了解的最高版本的規範,而不提及同時使用兩個版本 - 因爲一次只能使用兩個版本是無稽之談。 – Falkreon 2011-12-26 19:34:50