5

両方の当事者 (サーバーとクライアント) が実行する必要があるすべてのアクションを深く理解するために、HTTPS ページを開いたときにブラウザが実行する手順を知りたいです。基本的な手順は知っていますが、詳細を知りたいです。私が見つけた Google のリンクには、一般的な情報が記載されていますが、詳細は記載されていません。

関連情報を読むことができるソースはありますか。

Mozilla Firefox のソースを調べることを考えていましたが、以前ここで質問することにしました。

ありがとうございました。

4

1 に答える 1

7

HTTPS はRFC 2818で定義されています。つまり、ブラウザは最初にサーバーへの SSL/TLS 接続を確立し、次にこの接続内で HTTP 要求/応答を送信します。

SSL/TLS チャネルを確立するために、クライアントはハンドシェイクを開始し、その間にサーバーは X.509 証明書を送信します。SSL/TLS ハンドシェーク メカニズムに加えて、ブラウザは、証明書を持っているトラスト アンカーのリスト (信頼された証明書) と、アクセスしようとしている名前 ( RFCで定義されているように、URL のホスト名が証明書と一致する必要があります) と照合して検証します。 2818 セクション 3.1 )。通常、このほとんどは SSL/TLS スタック内に実装されますが、一部のブラウザーでは、例外 (場合によっては永続的な例外) を追加することでこれをバイパスできるため、SSL/TLS スタックが証明書の受け入れに失敗した場合に備えて、ブラウザーにはフォールバック メカニズムもあります。成功しました。

SSL/TLS プロトコル (およびそのハンドシェイク) は、SSLv3TLS 1.01.1、および1.2で定義されています。

サーバー証明書のサーバー公開鍵を使用して、クライアントとサーバーは認証済みの鍵交換を実行できます。その後、両者は共通のプレマスターシークレットを持ちます。マスター シークレットと、アプリケーション データの暗号化に使用される共有対称キーは、この事前マスター シークレットから派生します。

この認証された鍵交換に使用されるメカニズムは、暗号スイートによって異なります。詳細はTLS 仕様自体に記載されています。

例で学びたい場合は、Wireshark のサンプル データ (この回答に示されているように) を見る価値があります。

HTTPS接続の最初の数ミリ秒」も興味深いはずです。

于 2012-05-15T22:55:48.773 に答える