私はSSL/TLS経由で接続できるWebサーバーを作りたいと思っています。ブラウザはSSLセッションIDをパケットのどこに格納しますか。
HTTPSプロトコルはステートレスであるため、ブラウザがサーバーに接続するたびにハンドシェイクが行われることを想定しています。 同じクライアントブラウザに接続するたびに再ハンドシェークを避け、以前のハンドシェイクと同じ情報を使用したいと思います。
サーバが以前のブラウザとの再接続であることを識別するためには、SSLセッションIDを使用する必要があります。パケット内のSSLセッションIDはどこで確認できますか?
サーバーが再接続であることを知るためには、IDがパケット(つまりTCPヘッダー)内にある必要があります。私が間違っている?
私はサーバーを初めて作成しているので、私はライブラリを使用していません。私は直接パケットを操作しています。私はすでにパケットを操作するためのクラスを作った。 TLSレイヤーはTCPレイヤーの上にあるので、TLSレイヤーデータにアクセスするのに多大な労力は必要ありません。私は '記録層'のデータ構造を見ましたが、私はセッションIDを見つけることができませんでした。それはどこにある?
すでにHTMLサーバーの部分が完成しましたが、SSL/TLS機能を追加したいと思います。
私はhelloプロトコルとハンドシェイクがどのように行われているのか知っています。ハンドシェーク後の次のメインデータのパケットで、SSLセッションIDがどのようにサーバーに知られているかを知りたい。
TLSセッションの再開はTCPレベルではなくTLSレベルで行われます。つまり、情報はTCPヘッダーにはなく、TLSメッセージ、特にブラウザの場合はTLS ClientHelloにあります。 –
ステートレスサービスであるにもかかわらず、WebサービスはどのようにIDを引き出すことができますか? – Parker
SSL/TLSセッションIDとHTTPセッションIDが混在していると思います。どちらも目的によっては全く違うものです。最初はTLSレベルで転送され、次にHTTPレベルで転送されます(通常はCookieとして)。 –