【Paloalto】SSL復号化(SSL Forward Proxy)の設定と動作確認 PANOS 10.0.8

いまの Web 通信の大半は https:// で始まる URL で、SSL で暗号化されています。通信そのものの安全性は保たれますが、ファイアウォールなどでアプリケーション制御や UTM(アンチウイルスなど)を行おうとしても、データが暗号化されているため、中身を見て制御することができません。

InternetクライアントPaloalto公開サーバーHTTPSHTTPS暗号化されていて中身が見えない
図1 SSL 復号化をしない場合

そこで、制御する装置を通るときに、通信データを一度復号してデータを確認し、もう一度暗号化する機能が用意されています。Paloalto では、この機能を SSL Forward Proxy と呼びます。

InternetクライアントPaloalto公開サーバーHTTPSPaloalto が発行した証明書HTTPS公開サーバーの証明書復号してデータをチェック再暗号化して転送
図2 SSL Forward Proxy
この記事でわかること
  1. フォワードプロキシ用の信頼された証明書・信頼されない証明書を作る
  2. 復号ポリシーを設定し、端末にルート証明書を入れて復号を確かめる
  3. 復号プロファイルで、信頼されない証明書・期限切れ証明書のサイトをブロックする
  4. SSL 復号オプトアウトページを表示する

SSL 復号化から除外したいサイトを登録する場合は、次の記事を参考にしてください。

>> 参考記事 : SSL復号化除外の設定と動作確認

検証環境

PAN-OS 10.0.8 で検証しています(初版は 9.0.9 で検証。9.0 と設定項目の差はほとんどありません)。端末のブラウザは Microsoft Edge です。PAN-OS 10.0 は 2022年7月16日でサポートが終了(End-of-Life)しています。画面の項目の並びや表記は、バージョンによって変わります。

設定前の準備

SSL 復号化できているかどうかを確かめるため、トラフィックログに「復号化」の列を出します。MONITOR ›› ログ ›› トラフィック で、一覧の左上にカーソルを当てると下矢印が表示されるので、クリックします。「カラム」が表示されるので、「復号化」にチェックを入れます。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

Paloalto 設定画面(Web UI)画面イメージ
MONITOR ›› ログ ›› トラフィック ›› 列見出しのメニュー ›› カラム
カラム☑ 送信元ユーザー ☑ 宛先 ☑ 宛先ポート ☑ アプリケーション ☑ アクション ☑ ルール ☑ セッション終了理由 ☑ バイト ☐ Destination Device Host
1追加する列☑ 復号化
図3 カラムに「復号化」を追加(実際の画面ではなく、設定項目のポイントを示したイメージです)

復号化の列が追加されます。列は先頭に配置されるので、ドラッグで好きな位置に動かしてください。今回は復号化のテストに使うので、先頭のままにします。

端末から Google、Twitter、YouTube にアクセスしてみます。復号化されていない(no)ことがわかります。

Paloalto 設定画面(Web UI)画面イメージ
MONITOR ›› ログ ›› トラフィック
復号化送信元宛先宛先ポートアプリケーションアクションルール
1no10.0.2.11172.217.161.46443youtube-baseallowLAN-to-Internet
no10.0.2.11104.244.42.66443twitter-baseallowLAN-to-Internet
no10.0.2.11172.217.175.35443google-baseallowLAN-to-Internet
no10.0.2.11172.217.31.162443google-baseallowLAN-to-Internet
⋮
図4 設定前のトラフィックログ。送信元・宛先ゾーン(LAN/Internet)の列と、後半の行を省いています(実際の画面ではなく、表示のポイントを示したイメージです)

自己署名ルート CA 証明書を作る

今回は、エンタープライズ CA が署名した証明書ではなく、Paloalto が自己署名した証明書を作り、端末との通信の復号に使います。

接続先のサーバーの証明書が「信頼された証明書」か「信頼されない証明書」かによって、端末に提示する証明書を分けます。

クライアントPaloalto信頼された証明書のサーバー例:Google信頼されない証明書のサーバー例:自己署名証明書の機器SSL_Decryption_Trustedで署名(発行者 hirotanoblog.com)→ 警告なしSSL_Decryption_Untrustedで署名(発行者 Untrusted)→ 証明書の警告
図5 フォワードプロキシ用の証明書の使い分け

フォワードプロキシ用の信頼された証明書

DEVICE ›› 証明書の管理 ›› 証明書 で「生成」をクリックし、次の画面で設定します。

Paloalto 設定画面(Web UI)画面イメージ
DEVICE ›› 証明書の管理 ›› 証明書 ›› 証明書の生成
証明書タイプ◉ ローカル ○ SCEP
1証明書名SSL_Decryption_Trusted
2共通名hirotanoblog.com
証明書に表示される IP または FQDN
署名者 
3認証局☑ 認証局
☐ 秘密鍵のエクスポートをブロック
暗号設定
アルゴリズムRSA
ビット数2048
ダイジェストsha256
有効期限 (日)365
4生成キャンセル
図6 証明書の生成(信頼された証明書)。OCSP レスポンダと証明書の属性(空)は省いています(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1証明書名任意の名前です。今回は SSL_Decryption_Trusted にしました。
2共通名証明書に表示されるコモンネーム(IP アドレスまたは FQDN)です。今回は hirotanoblog.com にしました。
3認証局チェックを入れます。Paloalto が認証局(CA)として、サイトごとの証明書に署名できるようになります。
4生成クリックすると「Successfully generated certificate and key pair : SSL_Decryption_Trusted」と表示されるので、OK をクリックします。

証明書の一覧に SSL_Decryption_Trusted が追加されます。証明書の名前のリンクをクリックし、「フォワード プロキシ用の信頼された証明書」にチェックを入れて、OK をクリックします。

Paloalto 設定画面(Web UI)画面イメージ
DEVICE ›› 証明書の管理 ›› 証明書 ›› SSL_Decryption_Trusted ›› 証明書情報
名前SSL_Decryption_Trusted
サブジェクト/CN=hirotanoblog.com
発行者/CN=hirotanoblog.com
発効日時Jan 22 03:23:32 2022 GMT
有効期限Jan 22 03:23:32 2023 GMT
アルゴリズムRSA
1用途☑ 認証局
☑ フォワード プロキシ用の信頼された証明書
☐ フォワード プロキシ用の信頼されない証明書
☐ 信頼されたルート CA
無効化2OKキャンセル
図7 証明書情報で用途を設定(実際の画面ではなく、設定項目のポイントを示したイメージです)

フォワードプロキシ用の信頼されない証明書

接続先のサーバーの証明書が信頼されない証明書のときに、端末に提示する証明書を作ります。DEVICE ›› 証明書の管理 ›› 証明書 で「生成」をクリックし、次のように設定します。

Paloalto 設定画面(Web UI)画面イメージ
DEVICE ›› 証明書の管理 ›› 証明書 ›› 証明書の生成
1証明書名SSL_Decryption_Untrusted
2共通名Untrusted
3認証局☑ 認証局
4生成キャンセル
図8 証明書の生成(信頼されない証明書)。そのほかの項目は図6と同じです(実際の画面ではなく、設定項目のポイントを示したイメージです)

生成をクリックし、表示された画面で OK をクリックします。証明書の一覧で SSL_Decryption_Untrusted のリンクをクリックし、「フォワード プロキシ用の信頼されない証明書」にチェックを入れて、OK をクリックします。用途の表記が更新されていることを確かめます。

Paloalto 設定画面(Web UI)画面イメージ
DEVICE ›› 証明書の管理 ›› 証明書(デバイス証明書)
名前サブジェクトCAキー状態用途
SSL_Decryption_TrustedCN = hirotanoblog.com☑☑有効1フォワード プロキシ用の信頼された証明書
SSL_Decryption_UntrustedCN = Untrusted☑☑有効2フォワード プロキシ用の信頼されない証明書
図9 用途が設定された2つの証明書。発行者・有効期限・アルゴリズムの列は省いています(実際の画面ではなく、表示のポイントを示したイメージです)
信頼されない証明書は端末に入れない

あとで端末にインストールするのは、信頼された証明書(SSL_Decryption_Trusted)だけです。信頼されない証明書(SSL_Decryption_Untrusted)を端末に入れると、Paloalto が信頼しないサイトでも端末に警告が出なくなってしまいます。

復号ポリシーを設定する

復号の対象にする通信を、復号ポリシーで決めます。今回は、LAN から Internet へのすべての HTTPS 通信を復号の対象にします。POLICIES ›› 復号 で「追加」をクリックし、5つのタブ(全般、送信元、宛先、サービス/URL カテゴリ、オプション)を設定します。

Paloalto 設定画面(Web UI)画面イメージ
POLICIES ›› 復号 ›› 追加 ›› 復号ポリシー ルール
全般タブ
1名前SSL_Decryption_Policy
送信元タブ
2送信元ゾーンLAN
送信元アドレス☑ いずれか
宛先タブ
3宛先ゾーンInternet
宛先アドレス☑ いずれか
サービス/URL カテゴリタブ
サービスany
URL カテゴリ☑ いずれか
オプションタブ
4アクション○ 復号なし ◉ 復号
5タイプSSL フォワード プロキシ
6復号プロファイル選択肢None
default
新規 復号プロファイル
図10 復号ポリシー ルールの5つのタブ(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1名前任意の名前です。今回は SSL_Decryption_Policy にしました。
2送信元送信元ゾーンに LAN を選びます。送信元アドレスは制限しないので、「いずれか」にチェックを入れます。
3宛先宛先ゾーンに Internet を選びます。宛先アドレスは制限しないので、「いずれか」にチェックを入れます。サービスは any、URL カテゴリは「いずれか」にします。
4アクション「復号」にチェックを入れます。
5タイプSSL フォワード プロキシを選びます。
6復号プロファイル新しく作るので、「新規 復号プロファイル」をクリックします。

復号プロファイルの画面で、名前に SSL_Decryption_Profile と入力します。「SSL 復号化」タブは、今回は何もチェックを入れません。OK をクリックすると、作った復号プロファイルが復号ポリシーに適用されます。もう一度 OK をクリックすると、復号ポリシー SSL_Decryption_Policy が作られます。

セキュリティポリシーを設定する

POLICIES ›› セキュリティ でセキュリティポリシーを設定します。今回は、次の記事の基本構成のとおり、LAN から Internet ゾーンへの通信をすべて許可します。ポリシーを設定したら、コミットします。操作は次の記事を参考にしてください。

>> 参考記事 : 基本設定(ログイン、ホスト名、インタフェース、ルーティング、ポリシー)手順と動作確認

端末から動作を確かめる

証明書のエラーを確かめる

端末のブラウザ(Edge)から Google にアクセスすると、次のように証明書のエラーが表示されます。証明書を見ると、信頼された証明機関から発行されていないことがわかります。発行者は hirotanoblog.com です。

クライアントのブラウザ画面イメージ
▲ セキュリティ保護なし │ https://www.google.com
接続がプライベートではありませんNET::ERR_CERT_AUTHORITY_INVALID
証明書(全般)
信頼された証明機関がこの証明書を検証できません。
発行先:www.google.com
1発行者:hirotanoblog.com
有効期間:2021/12/27 から 2022/03/21
図11 ルート証明書を入れる前のエラーと証明書(実際の画面ではなく、表示結果のイメージです)

ルート証明書をエクスポートする

Paloalto で作ったルート証明書をエクスポートします。DEVICE ›› 証明書の管理 ›› 証明書 で、フォワードプロキシ用の信頼された証明書として使う SSL_Decryption_Trusted を選び、「証明書のエクスポート」をクリックします。

Paloalto 設定画面(Web UI)画面イメージ
DEVICE ›› 証明書の管理 ›› 証明書 ›› 証明書のエクスポート – SSL_Decryption_Trusted
1ファイル フォーマットBase64 エンコード済み証明書 (PEM)
☐ 秘密鍵をエクスポート
パスフレーズ 
パスフレーズの確認 
2OKキャンセル
図12 証明書のエクスポート(実際の画面ではなく、設定項目のポイントを示したイメージです)

ファイル フォーマットに「Base64 エンコード済み証明書 (PEM)」を選んで OK をクリックすると、cert_SSL_Decryption_Trusted.crt というファイルがダウンロードされます。秘密鍵はエクスポートしません。

端末に証明書をインストールする

Windows の端末で、次の手順でルート証明書をインストールします。

  1. 「ファイル名を指定して実行」で certmgr.msc と入力し、OK をクリックします。証明書マネージャーが起動します。
  2. 信頼されたルート証明機関 ›› 証明書 を右クリックし、すべてのタスク ›› インポート をクリックします。
  3. 証明書のインポート ウィザードが開くので、「次へ」をクリックします。
  4. エクスポートした cert_SSL_Decryption_Trusted.crt を選び、「次へ」をクリックします。
  5. 証明書ストアに「信頼されたルート証明機関」が選ばれていることを確かめ、「次へ」をクリックします。
  6. 確認画面で「完了」をクリックします。
  7. セキュリティ警告が表示されるので、「はい」をクリックします。
  8. インポートが成功したことを示すメッセージで、OK をクリックします。

証明書マネージャーの「信頼されたルート証明機関 ›› 証明書」に、発行先 hirotanoblog.com が追加されます。

信頼された証明書のサイトにアクセスする

端末から Google にアクセスします。今度は、証明書のエラーが表示されません。証明書を見ると、hirotanoblog.com から発行されていて、証明書のパス(チェーン)も問題ないことがわかります。

クライアントのブラウザ(証明書の表示)画面イメージ
全般タブ
発行先:www.google.com
1発行者:hirotanoblog.com
有効期間:2021/12/27 から 2022/03/21
証明のパスタブ
2hirotanoblog.com
 └ www.google.com
この証明書は問題ありません。
図13 ルート証明書を入れたあとの Google の証明書(実際の画面ではなく、表示結果のイメージです)

端末から Google、Facebook、YouTube にアクセスし、MONITOR ›› ログ ›› トラフィック を見ます。復号化が yes になっていることがわかります。

Paloalto 設定画面(Web UI)画面イメージ
MONITOR ›› ログ ›› トラフィック
復号化送信元宛先宛先ポートアプリケーションアクションルール
1yes10.0.2.11172.217.174.110443youtube-baseallowLAN-to-Internet
yes10.0.2.1174.125.102.41443youtube-baseallowLAN-to-Internet
yes10.0.2.11142.250.196.130443google-baseallowLAN-to-Internet
⋮
yes10.0.2.1131.13.82.7443facebook-baseallowLAN-to-Internet
yes10.0.2.1131.13.82.36443facebook-baseallowLAN-to-Internet
図14 設定後のトラフィックログ。送信元・宛先ゾーン(LAN/Internet)の列と、途中の行を省いています(実際の画面ではなく、表示のポイントを示したイメージです)

信頼されない証明書のサイトにアクセスする

Paloalto にルート証明書がなく信頼されないサイトとして、端末から Paloalto 経由で FortiGate の管理画面にアクセスしてみます。すると、発行者 Untrusted として、フォワードプロキシ用の信頼されない証明書として設定した証明書が提示されます。

また、証明書の期限が切れたサイトも、同じように証明書のエラーになります(接続した日付は 2022/1/22)。

クライアントのブラウザ画面イメージ
▲ セキュリティ保護なし │ https://(伏せています)
接続がプライベートではありません
NET::ERR_CERT_AUTHORITY_INVALID
発行先:FortiGate
1発行者:Untrusted
有効期間:2022/01/17 から 2024/04/21
▲ セキュリティ保護なし │ https://(伏せています)
接続がプライベートではありません
NET::ERR_CERT_DATE_INVALID
この証明書は有効期限切れか、まだ有効ではありません。
発行者:hirotanoblog.com
2有効期間:2021/04/14 から 2022/01/17
図15 信頼されない証明書のサイト(左)と、証明書の期限切れのサイト(右)(実際の画面ではなく、表示結果のイメージです)

復号プロファイルを設定する

復号プロファイルを設定すると、信頼されない証明書のサイトへの接続をブロックできます。OBJECTS ›› 復号 ›› 復号プロファイル で、復号ポリシーに適用している SSL_Decryption_Profile を選びます。

発行者が信頼されないサイトをブロックする

「SSL 復号化」タブの「SSL フォワード プロキシ」で、「発行者が信頼されていないセッションをブロック」にチェックを入れ、OK をクリックします。

Paloalto 設定画面(Web UI)画面イメージ
OBJECTS ›› 復号 ›› 復号プロファイル ›› SSL_Decryption_Profile
SSL 復号化タブ ›› SSL フォワード プロキシ ›› サーバー証明書の確認
期限切れ証明書のセッションをブロック☐
1発行者が信頼されていないセッションをブロック☑
証明書の状態が不明なセッションをブロックします☐
証明書の状態がタイムアウトのセッションをブロック☐
証明書の延長を制限☐
証明書のコモンネーム (CN) 値を SAN 拡張項目に追加☐
2OKキャンセル
図16 復号プロファイルのサーバー証明書の確認。「サポートされていないモード チェック」「失敗のチェック」「クライアント拡張」(すべて未チェック)は省いています(実際の画面ではなく、設定項目のポイントを示したイメージです)

復号プロファイルの一覧で、「サーバー証明書の確認」の列に「信頼されていない発行者」と表示されていることを確かめて、コミットします。

端末から信頼されないサイト(FortiGate の管理画面)にアクセスすると、証明書のエラーの画面になります。先に進めると、接続がブロックされます。

クライアントのブラウザ画面イメージ
▲ セキュリティ保護なし │ https://(伏せています)
このサイトへの接続はセキュリティで保護されていません(伏せています) から無効な応答が送信されました。 ERR_SSL_PROTOCOL_ERROR
図17 証明書のエラーの画面から先に進めたとき(実際の画面ではなく、表示結果のイメージです)

証明書の期限切れサイトをブロックする

同じように、証明書の期限が切れたサイトへのアクセスをブロックする場合は、復号プロファイルで「期限切れ証明書のセッションをブロック」にチェックを入れます。検証時の画面では、「発行者が信頼されていないセッションをブロック」のチェックは外した状態で確かめています。

Paloalto 設定画面(Web UI)画面イメージ
OBJECTS ›› 復号 ›› 復号プロファイル ›› SSL_Decryption_Profile
SSL 復号化タブ ›› SSL フォワード プロキシ ›› サーバー証明書の確認
1期限切れ証明書のセッションをブロック☑
発行者が信頼されていないセッションをブロック☐
図18 期限切れ証明書のセッションをブロック。そのほかの項目は図16と同じく未チェックです(実際の画面ではなく、設定項目のポイントを示したイメージです)

復号プロファイルの一覧で「期限切れの証明書」と表示されていることを確かめて、コミットします。端末から証明書の期限が切れたサイトにアクセスし、証明書のエラーの画面から先に進めると、ブロックされました。

クライアントのブラウザ画面イメージ
▲ セキュリティ保護なし │ https://(伏せています)
申し訳ございません。このページに到達できません証明書の有効期間:2021/04/14 から 2022/01/17(発行者 hirotanoblog.com)
図19 期限切れのサイトをブロックしたとき(実際の画面ではなく、表示結果のイメージです)
現在の状況

Palo Alto Networks のドキュメントでは、SSL フォワード プロキシの復号プロファイルで「期限切れ証明書のセッションをブロック」と「発行者が信頼されていないセッションをブロック」は、どちらも常にチェックを入れることが推奨されています。

SSL 復号オプトアウトページを表示する

SSL 復号化のときに、利用者に「SSL の暗号化が復号される」というメッセージを表示し、利用者が受け入れられない場合はオプトアウト(拒否)できるようにできます。初期設定では、オプトアウトページは表示されません。

表示させる場合は、DEVICE ›› 応答ページ で、「SSL 復号オプトアウト ページ」のアクションの「無効」をクリックします。「有効化 SSL 復号オプトアウト ページ」にチェックを入れて OK をクリックします。

Paloalto 設定画面(Web UI)画面イメージ
DEVICE ›› 応答ページ
タイプアクション場所
⋮
SSL 証明書エラー通知ページデフォルト
1SSL 復号オプトアウト ページ無効 → 2有効デフォルト
URL フィルタリングおよびカテゴリ一致ブロック ページデフォルト
図20 応答ページの SSL 復号オプトアウト ページ。「無効」をクリックして有効化すると「有効」になります(実際の画面ではなく、表示のポイントを示したイメージです)

「有効」に変わったことを確かめて、コミットします。端末から Google にアクセスすると、次のようなオプトアウトページが表示されます。Yes をクリックすると、SSL 復号化を経由して Google にアクセスできます。

クライアントのブラウザ画面イメージ
https://about.go…
SSL Inspection
(会社のポリシーにより、SSL で暗号化された通信は一時的に復号され、ウイルス・スパイウェア・マルウェアの検査を受け、検査後に再暗号化される、という説明文)
IP: 216.239.32.29
Category: any
Would you like to proceed with this session?
1Yes No
図21 SSL 復号オプトアウトページ(実際の画面ではなく、表示結果のイメージです)

ナレッジによると、オプトアウトページは、通信が検査・復号されるときに 24 時間に1回表示されます。

まとめ

設定場所内容
ログの列MONITOR ›› ログ ›› トラフィックカラムに「復号化」を追加
証明書DEVICE ›› 証明書の管理 ›› 証明書SSL_Decryption_Trusted(信頼された証明書)と SSL_Decryption_Untrusted(信頼されない証明書)を生成
復号ポリシーPOLICIES ›› 復号LAN → Internet を「復号」、SSL フォワード プロキシ、SSL_Decryption_Profile
端末certmgr.mscSSL_Decryption_Trusted を「信頼されたルート証明機関」にインポート
復号プロファイルOBJECTS ›› 復号 ›› 復号プロファイル発行者が信頼されていない/期限切れ証明書のセッションをブロック
オプトアウトDEVICE ›› 応答ページSSL 復号オプトアウト ページを有効化

更新履歴

  • 2020/11/3 初版(バージョン 9.0.9 を使用)
  • 2022/1/22 バージョン 10.0.8 用に更新
    • 画面の更新(9.0.9 → 10.0.8)※ 9.0 と設定項目の差はほとんどありません
    • 端末のブラウザを IE から Edge へ変更
    • フォワードプロキシの信頼された証明書と信頼されない証明書をそれぞれ発行し、信頼されないサイトへの接続に関しての動作確認を追加
    • 復号プロファイル設定の動作確認を追加

参考

コメント

  1. morizo より:

    コメント失礼いたします。
    ご丁寧な解説ありがとうがとうございます。
    2点ご質問がございます。
    セクション「自己署名ルートCA証明書(Self-Signed Root CA Certificate)の作成」
    の部分の
    「フォワードプロキシ用の信頼された証明書」・「フォワードプロキシ用の信頼されない証明書」
    にチェックは両方入れるのが正しいのでしょうか?
    この設定であると信頼されていないサイトもこの証明書を渡すことになり、
    クライアントがすべてのサイトを信頼できると認識して
    表示してしまうのではと思ったのですが?

    よろしくお願いいたします。

    • 博田 登 博田 登 より:

      コメントありがとうございます。
      ご質問の件ですが、おっしゃる通りの動作になるものと思います。
      セキュリティを考慮すると、「フォワードプロキシ用の信頼されない証明書」は、「フォワードプロキシ用の信頼された証明書」とは異なる、クライアントで信頼されていない別の証明書を使用すべきかと思います。

      また、「フォワードプロキシ用の信頼されない証明書」を設定しない場合、コミットで警告エラーがでます。

      Commit Error Received after Configuring SSL Decryption for Certificate Generation
      https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000Clb7CAC

      近々、本記事は全体的に更新する予定でして、コメントいただいた内容もぜひ反映したいと思います。
      有益なコメントいただき、ありがとうございました。