2011-10-16 12 views
5

現在、私が書いているHTTPプロキシにtlsハンドシェイクを実装しようとしています。私は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を実装しなければなりませんでしたが、これは非常に役に立ちました。