【えすえすえるおふろーど】

SSLオフロード とは?

最終更新:
💡 TLSの接続を手前で受け、後段の負担を減らす

クライアントとのTLS接続をロードバランサやリバースプロキシで終端し、暗号処理をバックエンドから引き受ける構成。後段へ平文で送るか、別のTLS接続で再暗号化するかを設計する。

📌 このページのポイント
SSLオフロード:区間を分けて考える Web ブラウザ TLS LB / プロキシ ここでTLS終端 後段の接続を設計する HTTPで送る場合 サーバ アプリ処理 この区間は平文 TLSで送り直す場合 サーバ アプリ処理 後段もTLS処理あり 再暗号化では後段の証明書も管理
上はクライアント側の接続、下は後段の選択肢です。内部ネットワークという理由だけで平文を安全とは判断せず、保護要件を確認します。
ひよこ ひよこ
暗号処理をオフロードするってどういうこと?
ペンギン先生 ペンギン先生
クライアントとのTLS接続を、Webサーバの手前にあるロードバランサやリバースプロキシで受けることだよ。そこでリクエストを復号し、後段に転送する。TLSにはCPU負荷があり、特にハンドシェイクの回数などが負荷に影響するんだ。
ひよこ ひよこ
復号した後は、平文で送っても大丈夫?
ペンギン先生 ペンギン先生
内部ネットワークというだけでは決められないよ。平文HTTPなら、その区間はTLSで保護されない。扱う情報や通信経路の要件に合わせて、後段との間にもTLS接続を張る再暗号化を選ぶことがあるんだ。
ひよこ ひよこ
再暗号化ならバックエンドは暗号処理をしない?
ペンギン先生 ペンギン先生
その場合はバックエンドもTLS処理をするよ。クライアントとLB、LBとバックエンドは別の接続になる。終端する場所と、各区間で暗号化するかを分けて考えると整理しやすいね。
ひよこ ひよこ
証明書はLBだけにあればいいの?
ペンギン先生 ペンギン先生
公開側の証明書をLB側にまとめられるのは利点だよ。ただし再暗号化するなら後段の証明書も必要。たとえばNGINXでは、後段の証明書を検証する設定も確認する。常に一箇所だけ管理すればよいわけではないんだ。
ひよこ ひよこ
クラウドのLBなら自動でやってくれる?
ペンギン先生 ペンギン先生
たとえばAWS ALBではHTTPSリスナーに証明書とセキュリティポリシーを設定して終端するよ。証明書の更新や後段の接続も、利用する機能・設定の確認が必要。一方、暗号化した通信を復号せず通すTLSパススルーは、ここで説明した終端とは違う構成なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SSLオフロード」って出てきたら「TLSの暗号処理を手前のLBやプロキシが引き受ける構成」と思えばだいたいOK!
📖 おまけ:英語の意味
「SSL Offload」 = SSL処理の肩代わり
💬 offloadは「負担を移す」という意味。名称にSSLが残っているけれど、ここではTLS接続の処理を引き受ける構成を説明しているよ。

参考資料

← 用語集にもどる