WAF(Webアプリケーションファイアウォール)とSSLの関係について、正しく理解していますか?
WAFはWebアプリケーションを守るための重要なセキュリティ対策ですが、SSL(HTTPS)との関係を理解せずに導入してしまうと、本来の効果を発揮できない可能性があります。
例えば、通信がSSLによって暗号化されている場合、そのままではWAFはリクエストの内容を確認することができず、攻撃を検知できないケースもあります。
つまり、WAFとSSLはそれぞれ単体で考えるものではなく、組み合わせて設計することが重要なのです。
本記事では、WAFとSSLの関係や、暗号化された通信をどのように検査するのか、構成・設計のポイントを中心に解説します。
WAFとは?
WAF(Web Application Firewall)は、Webアプリケーションの脆弱性を狙った攻撃を防ぐためのセキュリティ対策です。
Webサイトへのリクエスト内容を検査し、不正なパターンや攻撃と判断される通信をブロックする役割を担います。
このように、Webアプリケーションを保護するために重要な役割を持つWAFですが、SSL(HTTPS)と組み合わせた構成を正しく理解していないと、その効果を十分に発揮できない場合があります。
SSLとは?
SSL(TLS)は、Webサイトとユーザー間の通信を暗号化する仕組みです。これにより、第三者による盗聴や改ざんを防ぐことができます。
現在では、セキュリティ対策としてWebサイト全体をHTTPS化することが一般的になっています。
ただし、SSLは通信を暗号化するものであり、攻撃そのものを防ぐ仕組みではありません。不正なリクエストであっても、そのまま暗号化されて送信されてしまいます。
そのため、WAFはブラウザとWebサーバー間の通信に対して第三者という立ち位置となり、そのままでは通信内容を確認することができません。
では、暗号化された通信の中身をどのように検査するのでしょうか。
WAFとSSLの関係とは
なぜWAFは暗号化通信を検査できるのか
SSLによって通信が暗号化されている場合、そのままではWAFはリクエストの内容を確認することができません。
しかし、WAFが攻撃を検知・防御するためには、通信の中身を検査する必要があります。
そのため、WAFでは暗号化された通信を復号したうえで、リクエスト内容を検査する仕組みが用いられています。
多くのWAFでは、SSL証明書を設定することで通信を復号し、その内容を検査することが可能です。
また、WAF自体に復号機能がない場合は、ロードバランサーやSSL終端装置などで通信を復号した後にWAFへ渡す構成が取られます。
SSL証明書と公開鍵・秘密鍵の仕組み
HTTPS通信では、公開鍵と秘密鍵を使って安全に通信内容を暗号化・復号する仕組みが利用されています。
WAFが通信内容を検査するためには、SSL/TLSによって暗号化されたデータを復号する必要があります。その際に重要な役割を担うのが、「SSLサーバ証明書」と「公開鍵」「秘密鍵」です。
公開鍵はSSLサーバ証明書に含まれており、秘密鍵はWebサイトの管理者が作成し、公開鍵で暗号化されたものを復号する鍵となります。外部には公開せず、厳重に管理されている鍵になります。
暗号されたhttps通信の復号は以下の流れで行われます。

- 利用者(ブラウザ)がWebサイトに対してリクエストを依頼
- WebサイトがSSLサーバ証明書(公開鍵含む)を利用者に送付
- 利用者側で、Webサイトと暗号化(https)通信を行うための鍵(共通鍵)を作成
- 作成した「共通鍵」を、Webサーバから受領した「公開鍵」で暗号化
- 「公開鍵」で暗号化した「共通鍵」をWebサイトへ送付
※暗号化されているので第三者に「共通鍵」の内容は漏れない - Webサイトは受領した、暗号化された「共通鍵」を「秘密鍵」で復号
- https通信を行うための共通鍵が、両者で確認できたので、以降の通信は公開鍵で暗号化しやり取りを行う(https通信が可能となる)
上記はWebサイトとのやり取りとなりますが、間に入るWAFがhttps通信を復号する際も同じ流れになります。そのため、WAFの設定内にも証明書のインストール、秘密鍵を登録するための仕組みが用意されております。仕組みが存在しないWAFもありますが、WAFの前にhttps通信を復号する仕組みを用意しておくことで攻撃の判断ができるようになります。
WAFとSSLの構成パターンと設計ポイント
ここまでで仕組みを解説してきましたが、実際の環境ではどのように構成すればよいのでしょうか。
WAFとSSLを組み合わせる際には、「どこで通信を復号するか」によって構成が大きく変わります。適切に設計しなければ、WAFが通信内容を検査できず、本来の効果を発揮できない可能性があります。
ここでは代表的な構成パターンと設計のポイントを紹介します。
■ パターン①:WAFで復号する構成
WAFにSSL証明書と秘密鍵を設定し、WAF自身が通信を復号したうえでリクエスト内容を検査する構成です。
この構成では、WAF単体で通信の検査まで完結するため、シンプルに導入・運用できるというメリットがあります。一方で、WAFに証明書や秘密鍵を配置する必要があるため、鍵管理やセキュリティ対策には注意が必要です。
■ パターン②:WAFの前段で復号する構成
ロードバランサーやSSL終端装置などで通信を復号した後、平文の通信をWAFに渡す構成です。
この構成では、証明書や鍵の管理を一箇所に集約できるため、大規模なシステムや複数サービスを運用する環境に適しています。ただし、構成が複雑になりやすく、設計や運用の難易度が上がる点には注意が必要です。
■ 設計時のポイント
WAFとSSLを組み合わせる際は、以下の点を意識することが重要です。
・WAFが必ず通信内容を検査できる位置に配置する
・どこで通信を復号するかを明確にする
・SSL証明書や秘密鍵の管理方法を整理する
このように、WAFとSSLは単体で導入するのではなく、構成全体として設計することが重要です。
SSL証明書がないとどうなる?
SSL証明書が適切に設定されていない場合、WAFを導入していても通信内容を正しく検査できない可能性があります。
SSLによって通信が暗号化されている環境では、復号処理が行われなければ、WAFはリクエストの中身を確認することができません。その結果、不正な通信であっても検知できず、攻撃を防げないケースが発生します。
また、SSL証明書の設定が不十分な場合、意図しない箇所で通信が暗号化されたままとなり、WAFが正常に機能しない構成になることもあります。
このように、WAFとSSLはそれぞれ単体で導入するのではなく、通信の復号ポイントを含めて適切に設計することが重要です。
まとめ
本記事では、WAFとSSLの関係性や、暗号化された通信をどのように検査するのかについて解説しました。
SSLは通信の盗聴や改ざんを防ぐ重要な仕組みですが、攻撃そのものを防ぐものではありません。また、通信が暗号化されている環境では、適切に復号されなければWAFはリクエストの内容を確認できず、本来の防御機能を発揮できない可能性があります。
そのため、WAFを導入する際は、SSLとの関係を踏まえた構成・設計が不可欠です。復号ポイントや証明書の配置を適切に設計することで、はじめてWAFは効果的に機能します。
「WAFを導入しているから安心」と考えるのではなく、正しく機能しているかを見直すことが重要です。
当サイトでは、WAFの導入・見直しを検討している方に向けて、機能や選定ポイントをわかりやすくまとめた資料をご用意しています。「サイバー攻撃可視化ツールPrimeWAF 基本ガイドブック」では、WAFを効果的に活用するためのポイントを解説しています。ぜひダウンロードしてご活用ください。

