3

プレーンおよび SSL / TLS 暗号化接続を受け入れる C++ アプリケーションがあります。現在、これは 2 つの別々のポートで行われます。

単一のポートを使用して、クライアントが TLS を使用しているかどうかを検出し、それに応じて応答できるようにしたいと考えています。

最初の TLS ハンドシェイクに干渉することなく、ソケット接続を「覗く」ことは可能ですか?

OpenSSL を使用して TLS を実装しています。

4

2 に答える 2

3

新しい着信接続の最初の数バイトを消費せずに (フラグを指定recv()して呼び出してMSG_PEEK) ピークし、それらが RFC 2246 で定義されている SSL ClientHello メッセージのように見えるかどうかを確認するだけで済みます。次に、プレーンテキストとして続行するか、SSL 経由で続行するかを決定します。

于 2013-08-04T01:12:18.443 に答える