HTTPS はRFC 2818で定義されています。つまり、ブラウザは最初にサーバーへの SSL/TLS 接続を確立し、次にこの接続内で HTTP 要求/応答を送信します。
SSL/TLS チャネルを確立するために、クライアントはハンドシェイクを開始し、その間にサーバーは X.509 証明書を送信します。SSL/TLS ハンドシェーク メカニズムに加えて、ブラウザは、証明書を持っているトラスト アンカーのリスト (信頼された証明書) と、アクセスしようとしている名前 ( RFCで定義されているように、URL のホスト名が証明書と一致する必要があります) と照合して検証します。 2818 セクション 3.1 )。通常、このほとんどは SSL/TLS スタック内に実装されますが、一部のブラウザーでは、例外 (場合によっては永続的な例外) を追加することでこれをバイパスできるため、SSL/TLS スタックが証明書の受け入れに失敗した場合に備えて、ブラウザーにはフォールバック メカニズムもあります。成功しました。
SSL/TLS プロトコル (およびそのハンドシェイク) は、SSLv3、TLS 1.0、1.1、および1.2で定義されています。
サーバー証明書のサーバー公開鍵を使用して、クライアントとサーバーは認証済みの鍵交換を実行できます。その後、両者は共通のプレマスターシークレットを持ちます。マスター シークレットと、アプリケーション データの暗号化に使用される共有対称キーは、この事前マスター シークレットから派生します。
この認証された鍵交換に使用されるメカニズムは、暗号スイートによって異なります。詳細はTLS 仕様自体に記載されています。
例で学びたい場合は、Wireshark のサンプル データ (この回答に示されているように) を見る価値があります。
「HTTPS接続の最初の数ミリ秒」も興味深いはずです。