TLS 終端 (TLS Termination) とは - ロードバランサーで HTTPS を復号する構成

TLS 終端はロードバランサーや CDN で HTTPS を復号しバックエンドの暗号化負荷を軽減する構成。AWS ALB/Nginx での設定例とセキュリティ上の注意点を解説

TLSネットワーク

TLS 終端とは

TLS 終端 (TLS Termination) は、ロードバランサーや CDN で TLS (HTTPS) の暗号化/復号を処理し、バックエンドサーバーとの通信を平文 HTTP にする構成パターンである。バックエンドサーバーから TLS 処理の負荷を取り除き、証明書管理を一元化する。

[クライアント] ──HTTPS──→ [ALB / CloudFront] ──HTTP──→ [バックエンド]
                          ↑ TLS 終端ポイント

なぜ TLS 終端が必要か

TLS のハンドシェイクと暗号化/復号は CPU を消費する。各バックエンドサーバーで TLS を処理すると、サーバーごとに証明書を配置・更新する必要があり、運用負荷が高い。TLS 終端をロードバランサーに集約することで:

  • 証明書管理が 1 箇所で済む (ACM で自動更新)
  • バックエンドの CPU 負荷が軽減される
  • バックエンドの実装がシンプルになる (HTTP のみ対応)

AWS での TLS 終端

ALB + ACM

ALB が TLS を終端し、ターゲットグループへの通信は HTTP (ポート 80) で行う。ACM の証明書は自動更新されるため、証明書の期限切れを心配する必要がない。

CloudFront + S3

CloudFront が TLS を終端し、S3 オリジンへの通信は AWS 内部ネットワークで行う。静的サイトホスティングの標準構成だ。

TLS 終端の構成パターン

TLS 終端の構成パターンを以下にまとめる。

パターンTLS 終端バックエンド通信用途
TLS TerminationLB で終端HTTP (平文)一般的な Web アプリ
TLS PassthroughLB は素通しバックエンドで TLS 処理エンドツーエンド暗号化が必要
TLS Re-encryptionLB で終端 + 再暗号化HTTPS (再暗号化)コンプライアンス要件

セキュリティ上の考慮

TLS 終端後のバックエンド通信が平文になるため、VPC 内のプライベートサブネットで通信する。インターネットを経由しない限り、平文通信のリスクは低い。

コンプライアンス要件 (PCI DSS、HIPAA) でエンドツーエンド暗号化が求められる場合は、TLS Re-encryption または TLS Passthrough を使う。

バックエンドでの X-Forwarded ヘッダー

TLS 終端後、ALB はバックエンドに以下のヘッダーを付与する。

X-Forwarded-For: 203.0.113.50      # クライアントの IP
X-Forwarded-Proto: https            # 元のプロトコル
X-Forwarded-Port: 443               # 元のポート

バックエンドは X-Forwarded-Proto を確認し、HTTPS でアクセスされたことを認識する。リダイレクト URL の生成やセキュリティヘッダーの設定に使う。

TLS 終端の理解を深めるには関連書籍が参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事