SSL/TLSとは? 初心者向けに仕組みをわかりやすく解説




はじめに

SSL/TLSは「通信を暗号化する仕組み」と説明されますが、それだけでは接続先の確認方法や暗号鍵の扱いまでイメージしにくいでしょう。TLSは証明書で接続先を確認し、安全に共有した情報から通信専用の鍵を作ってHTTPデータを保護します。

この記事では通信開始までの流れを図解し、ChromeとWindowsのコマンドで実際の接続を確認する方法、CDN利用時の注意点まで解説します。

SSL/TLSとは

SSLとTLSは、ネットワーク通信を保護するプロトコルです。主な役割は次の3つです。

  • 暗号化:通信内容を第三者から読みにくくする
  • 完全性の確認:通信途中の改ざんを検知する
  • 認証:証明書を使って接続先を確認する

現在使われるのはSSLの後継であるTLSです。「SSL化」という呼び方は残っていますが、実際にはTLSを指す場合がほとんどです。TLS 1.0と1.1は非推奨であり、1.2以降を使うことが基本です。

HTTPとHTTPSの違いは、関連記事「HTTPとHTTPSの違いとは?」で解説しています。本記事ではHTTPSの内側でTLSが何をしているかに焦点を当てます。

TLS通信が始まるまでの流れ

HTTPSサイトへアクセスすると、本文の送受信より先に「TLSハンドシェイク」を行います。

ブラウザ                              Webサーバー
   |  1. 対応方式と鍵の材料を送る          |
   | -----------------------------------> |
   |  2. 採用方式・証明書・鍵の材料         |
   | <----------------------------------- |
   |  3. ドメイン・期限・発行元を検証       |
   |  4. 両者が同じセッション鍵を計算       |
   |  5. HTTPデータを暗号化して送受信       |
   | <==================================> |

完成したセッション鍵をネットワークへそのまま流すわけではありません。ブラウザとサーバーは、交換した材料から同じ鍵をそれぞれ計算します。

証明書は、ドメイン名と公開鍵を結び付けて接続相手を確認するためのものです。ブラウザは、アクセス中のドメイン、有効期限、信頼できる認証局の署名などを検証します。

ChromeでTLSと証明書を確認する

Chromeでは次の手順で確認できます。画面名はバージョンによって異なる場合があります。

  1. HTTPSページを開き、F12 キーでDevToolsを開きます。
  2. 「Security」または「Privacy and security」を選びます。
  3. メインのオリジンを選び、接続方式を確認します。
  4. 「View certificate」から対象ドメイン、発行者、有効期限を確認します。
項目 確認できること
Protocol TLS 1.2やTLS 1.3などのバージョン
Certificate 対象ドメイン、発行者、有効期限
Mixed Content HTTPの画像やスクリプトが混ざっていないか

Windowsのcurl.exeで接続を確認する

PowerShellでは次のコマンドでも確認できます。

curl.exe -Iv https://example.com/

-I はヘッダーを確認し、-v は接続の詳細を表示します。証明書検証後に HTTP/1.1 200 OK などが返れば、HTTP通信まで進めています。

Windowsでは証明書の詳細が出ない場合があるため、その場合はChrome DevToolsで確認します。証明書エラーを無視する -k は使用しません。

HTTPSで暗号化される範囲

CDNやWAFを利用するサイトでは、TLS通信が2つの区間に分かれる場合があります。

ブラウザ ── TLS区間1 ──> CDN・WAF ── TLS区間2 ──> Webサーバー

ブラウザから見える証明書はCDN側のものです。CDNとWebサーバーの間がHTTPなら、暗号化されるのは区間1だけです。

サイト運営者はCDNからWebサーバーまでHTTPSにし、証明書検証も有効にします。ブラウザのHTTPS表示だけでは、区間2の状態までは分かりません。

よくあるTLS・証明書トラブル

症状 主な原因 確認ポイント
期限切れ 自動更新の失敗、時刻のずれ 有効期限、サーバー時刻、更新ログ
ドメイン不一致 別ドメイン用証明書、設定ミス URLと証明書の対象ドメイン
発行元を信頼できない 中間証明書の不足、自己署名 証明書チェーン、サーバー設定
Mixed Content HTTPSページからHTTP素材を取得 DevToolsのSecurity・Network

証明書を更新しても警告が消えない場合は、CDNやロードバランサーが古い証明書を返していないか確認します。サーバー本体の証明書と、利用者へ提示される証明書が異なることがあるためです。

HTTPSでも守れないもの

TLSが守るのは通信経路です。HTTPS化されたフィッシングサイト、WordPressやプラグインの脆弱性、サーバー侵入後の情報漏えい、弱いパスワードまでは防げません。

利用者はURLや運営元も確認します。運営者はアップデート、アクセス制御、バックアップも組み合わせます。

まとめ

SSL/TLSは、通信の暗号化、改ざん検知、接続先の確認を行う仕組みです。通信前には証明書の検証と鍵共有を含むTLSハンドシェイクが行われます。

Chrome DevToolsを使えば、TLSバージョンや証明書を自分で確認できます。CDNを使う場合は、ブラウザからCDNだけでなく、CDNからWebサーバーまで暗号化されているかも確認しましょう。

参考情報

コメント

タイトルとURLをコピーしました