HTTPSとは
HTTPSは、HTTPをTLSで暗号化し、通信内容の保護と接続先の認証を行う方式です。一般にHypertext Transfer Protocol Secure(ハイパーテキスト・トランスファー・プロトコル・セキュア)と説明され、エイチティーティーピーエスと読みます。
ブラウザーはHTTPSのURLへ接続すると、HTTP要求を送る前にTLSの安全な通信路を作ります。サーバー証明書と暗号学的な署名を確かめ、合意した鍵でHTTPの要求・応答を保護します。
HTTPSが保証する中心は「いま接続している名前の相手との通信が、途中から読まれにくく改ざんを検出できること」です。そのサイトの運営者が善良か、掲載内容が正しいかまで保証する印ではありません。

証明書は、公開鍵と接続先の名前を信頼の連鎖で結び付ける
URLのホスト名が証明書のSubject Alternative Nameと一致する
現在時刻が証明書の有効開始から終了までに収まる
中間証明書をたどり、端末が信頼するルート証明書へつながる
サーバーが証明書の公開鍵に対応する署名を作れることを確認する
証明書用途、署名方式、鍵長、失効情報などを検証規則へ照らす
スキーム、ホスト、ポートの組ごとにWeb上の権限境界を分ける
暗号化されるのはHTTPメッセージで、通信の存在まで消えるわけではない
TLS通信路の中では、HTTPメソッド、パス、要求・応答ヘッダー、Cookie、本文が暗号化・完全性保護されます。パスはURLの一部でも、通常はHTTP要求としてTLS内へ入ります。パスワードやフォーム内容を平文で途中から読まれにくくします。
一方、配送に必要な送信元・宛先IPアドレス、通信量、時刻、パケット長の傾向はネットワークから観測できます。名前解決を通常のDNSで行えば問い合わせ名も別に見えます。TLSのServer Name Indicationも構成・方式により見える場合があります。「HTTPSだから何も見えない」ではなく、HTTP内容を保護しつつ、経路制御に必要な外側情報は残ると理解します。
南京錠や警告なしは、サイト内容の安全評価ではない
ブラウザーの接続表示は、証明書検証とTLS接続の状態を示します。詐欺サイトも、自分が取得した似た名前のドメインには正しい証明書を用意できます。表示名、ドメインの綴り、操作内容、運営者情報を別に確認します。
証明書エラーを無視すると、名前違い、期限切れ、未知の認証局、通信傍受などを区別できません。組織内プロキシが端末へ独自認証局を配り、TLSをいったん復号して検査する場合もあります。そのときブラウザーから見える証明書発行者と、外部サイトまでの接続は分かれます。
混在コンテンツは、安全なページへ平文の部品を持ち込む
HTTPSページがHTTPのスクリプト、フレーム、画像などを読み込むと、mixed content(ミックスド・コンテント/混在コンテンツ)になります。攻撃者が平文部品を書き換えれば、保護されたページの表示や動作へ影響できるため、ブラウザーは危険な種類を遮断します。
すべてのサブリソースをHTTPSへ移し、リダイレクト任せにせずURLを修正します。Content Security Policyのupgrade-insecure-requestsは移行補助になりますが、接続先がHTTPSを正しく提供していることが前提です。
最初の平文アクセスをHSTSでHTTPSへ固定できる
HSTS(HTTP Strict Transport Security/エイチティーティーピー・ストリクト・トランスポート・セキュリティ)は、指定期間、そのホストへHTTPで接続せずHTTPSへ置き換えるようブラウザーへ通知します。最初のHTTP応答を攻撃者に妨害される降格を防ぎやすくします。
includeSubDomainsやpreloadは影響範囲が大きく、証明書切れや未対応サブドメインがあると接続不能になります。段階的に期間を延ばし、全サブドメインを確認してから設定します。リダイレクトは移動指示、HSTSはブラウザー側の接続規則であり、役割が違います。
CDNやロードバランサーでTLSを終端する場合、内側の経路も別に設計する
大規模サイトではCDN、リバースプロキシ、ロードバランサーが利用者とのTLSを終端し、背後サーバーへHTTPまたは別のTLS接続で渡します。証明書の秘密鍵、更新、暗号設定を終端点で管理します。
利用者から終端点までHTTPSでも、その先が自動的に同じ保護状態になるわけではありません。内部ネットワークの脅威、相互認証の必要性、転送先検証、Forwarded系ヘッダーの信頼境界を決めます。
仕様の確認資料:RFC 9110「https URI Scheme」、RFC 9525「Service Identity in TLS」、RFC 6797「HTTP Strict Transport Security」