2011-10-16 110 views
5

我目前正在嘗試實現一個tls握手到我寫的一個http代理中。我知道我可以使用OpenSSL爲我完成這項工作,但我有興趣自己編寫它。TLS握手消息解析

我目前正在通過TLS RFC工作,並且對如何解析ClientHello消息感到困惑,特別是它可能會或可能沒有會話ID,並且似乎沒有計算密碼組數量的事實或壓縮方法。

有沒有人知道這樣做的最好方法?

+3

「我如何實現TLS」很可能過於寬泛。 –

+0

我的問題不是實現整個事情,問題是我不知道如何處理事情是可選的情況下,它似乎沒有消息中的元素告訴我會有多少物品。 –

+2

我不知道你爲什麼要這樣做。除了CONNECT命令之外,沒有必要以任何方式處理內容來編寫HTTP代理。如果你的代理是一個SSL端點,你當然應該使用OpenSSL,如果你不再是SSL端點,你也不需要解析SSL,只需直接發送它即可。 – EJP

回答

7

session_id的前面是長度。與密碼套件和壓縮算法一樣。

什麼是你缺少的是RFC的4.3節:

可變長度向量通過指定法律 長度的子範圍(含),使用符號定義。當 編碼時,實際長度在字節 流的向量內容之前。長度將以數字的形式消耗盡可能多的字節,以保持向量的指定最大長度(上限) 長度。具有零的實際長度字段的可變長度向量被稱爲空向量。

+0

葉,不幸我第一次錯過了。我再讀了幾遍,終於抓住了這條線。 –

0

看看THIS INCREDIBLE BOOK。我不得不在沒有使用任何GPL軟件的情況下爲嵌入式系統實現TLS 1.2,這非常有用。