はじめに
近年、Google や Yahoo! をはじめとする多くの Web サイトが常時 SSL 化(HTTPS)され、通信内容は暗号化されることが標準になりました。プライバシー保護の観点では望ましい状況ですが、ネットワーク管理者にとってはセキュリティ上の課題も生まれています。
それは、ウイルスや攻撃コードも暗号化されて配信される という点です。
従来のファイアウォールにとって HTTPS 通信は中身が見えない暗号化された通信路であり、その中にマルウェアが含まれていても、暗号化されたまま通過させてしまいます。この「暗号化通信の中身を検査できない」という課題に対応するための機能が、FortiGate の SSL インスペクション(Deep Inspection) です。
本記事では、暗号化された通信を一度復号して中身を検査する Deep Inspection の仕組みと、運用で多くの方が直面する ブラウザのセキュリティ警告を出さずに運用するための設定手順 を整理します。検証は FortiOS 7.4 / 7.6 系 を前提にしています。
なお、SSL インスペクションが UTM 機能(IPS / アンチウイルス / Web フィルタ)の効果を引き出すうえで重要な役割を担う点については、関連記事『FortiGate UTM 機能の仕組みと IPS 誤検知のリスクと対処』も参考にしてください。
- 暗号化通信の中身を検査する Deep Inspection の仕組み
- FortiGate での設定手順(証明書のダウンロードからポリシー適用まで)
- ブラウザでセキュリティ警告を出さないためのクライアント設定
- Deep Inspection と Certificate Inspection の使い分け
- 設計時に押さえたい制約事項(証明書ピンニング・性能影響など)
SSL インスペクションの仕組み
SSL インスペクション(Deep Inspection)は、PC と Web サーバーの間に FortiGate が中継として入り、暗号化された通信を復号・検査・再暗号化する技術です。技術的には 中間者(Man-in-the-Middle)型の通信制御 の仕組みを利用しており、セキュリティ目的での通信制御に応用されています。

FortiGate が行う証明書の再署名
通常、PC と Web サーバーは暗号化された通信路で直接やり取りしています。Deep Inspection を有効にすると、FortiGate がその通信に中継として入り、以下の処理を高速に行います。
- 復号: PC から送られてきた暗号データを復号する
- 検査: 中身にウイルスや不正なコードが含まれていないかを IPS / アンチウイルスでチェックする
- 再暗号化: 問題がなければ再度暗号化して Web サーバーへ送る
ブラウザがセキュリティ警告を出す理由
この機能を有効にすると、ユーザーのブラウザには 「この接続はプライベートではありません」 という警告画面が表示されます。これは、FortiGate が 証明書の再署名 を行っているためです。
本来、Google のサイトは Google の正規 CA が発行した証明書を提示します。しかし、FortiGate は通信に中継として入る際、FortiGate が再署名した Google 用の証明書 に置き換えて PC に渡します。
ブラウザから見ると、提示された証明書の発行元が FortiGate という未登録の CA になっており、不正な証明書として判定されます。これがセキュリティ警告の正体です。
そもそも証明書がどのような役割を担い、未登録の CA で署名するとなぜ警告が出るのかについては、関連記事『SSL 証明書 DV・OV・EV の違いとは?見分け方と選び方』でも整理しています。
この警告を消すには、PC に対して 「FortiGate が発行する証明書を信頼するよう設定する」(ルート CA 証明書をインポートする)ことが必要です。
参考: Fortinet Document Library / Deep inspection(FortiOS 7.6.6)
“Because there is no Fortinet_CA_SSL in the browser trusted CA list, the browser displays an untrusted certificate warning when it receives a FortiGate re-signed server certificate. To stop the warning messages, trust the FortiGate-trusted CA Fortinet_CA_SSL and import it into your browser.”
(Fortinet_CA_SSLがブラウザの信頼済み CA リストに含まれていないため、FortiGate が再署名した証明書を受信した際にブラウザは警告を表示します。警告を抑制するには、Fortinet_CA_SSLを信頼済み CA としてブラウザにインポートします)
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/122078/deep-inspection
Deep Inspection が対象とするプロトコル
Deep Inspection は HTTPS だけでなく、以下の SSL/TLS で暗号化されるプロトコルも検査対象に含めることができます。
- HTTPS: Web 通信
- SMTPS: 暗号化された SMTP(メール送信)
- POP3S / IMAPS: 暗号化された POP3 / IMAP(メール受信)
- FTPS: 暗号化された FTP
検査対象とするプロトコルは、SSL/SSH インスペクションプロファイル内で個別に有効化 / 無効化できます。
Deep Inspection と Certificate Inspection の違い
FortiGate の SSL/SSH インスペクションには、Deep Inspection(深い検査) と Certificate Inspection(証明書検査) の 2 つのモードがあります。プライバシー上の理由で Deep Inspection を採用しにくい環境では、Certificate Inspection も選択肢になります。
| 項目 | Certificate Inspection | Deep Inspection |
|---|---|---|
| 検査対象 | SSL/TLS ヘッダのみ(証明書情報・SNI など) | 復号後の通信内容すべて |
| ブラウザ警告 | 通常は表示されない(ブロックページ表示時のみ) | クライアントへの証明書インストールが前提 |
| 復号の有無 | 復号しない | 復号して中身を検査する |
| 利用できる UTM 機能 | Web フィルタ(一部)、アプリ識別(一部)、SNI ベースのカテゴリ判定 | IPS / アンチウイルス / DLP / Web フィルタの全機能 |
| プライバシーへの影響 | 通信内容は復号されない | 通信内容を復号して検査 |
| 主な用途 | プライバシー重視の環境、簡易な制御 | 本格的な脅威防御 |
| FortiGate でのプロファイル名 | certificate-inspection | deep-inspection |
参考: Fortinet Document Library / Certificate inspection(FortiOS 7.6.6)
“When you use certificate inspection, the FortiGate only inspects the headers up to the SSL/TLS layer. If you do not want to deep scan for privacy reasons but you want to control web site access, you can use certificate-inspection.”
(Certificate Inspection を使う場合、FortiGate は SSL/TLS 層までのヘッダのみを検査します。プライバシー上の理由で Deep Inspection を行わない一方で Web サイトへのアクセス制御を行いたい場合に利用できます)
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/505842/certificate-inspection
選定の目安
- 本格的な脅威防御を行いたい場合
-
Deep Inspection を選択。証明書配布の運用負荷を許容できることが前提
- プライバシー上の理由で復号を避けたい場合
-
Certificate Inspection を選択。ただし、アンチウイルスや IPS の一部は効果が限定的
- ハイブリッド運用
-
「業務通信は Deep Inspection、金融や医療などのカテゴリは Certificate Inspection」と、カテゴリ単位で使い分ける構成も可能
FortiGate の SSL Deep Inspection 設定手順
FortiGate から CA 証明書をダウンロード
PC に FortiGate を信頼させるためのルート CA 証明書を、FortiGate 本体から取り出します。
- FortiGate の管理画面にログインします
- 左メニューから System > Certificates を開きます
- リストから
Fortinet_CA_SSLを選択します(SSL インスペクションで利用される標準の CA 証明書) - Download をクリックして保存します(形式は
.cerなど)
なお、証明書一覧には Fortinet_CA_Untrusted という別の証明書も存在します。この証明書は絶対にブラウザにインポートしないでください(詳細は後述の「Fortinet_CA_Untrusted 証明書を取り扱う際の注意」セクションを参照)
クライアント PC への証明書インポート
FortiGate 側で Deep Inspection を有効化する前に、クライアント PC への証明書インストールを先に行うことをおすすめします。証明書がインストールされていない状態で Deep Inspection を有効化すると、対象 PC の Web 閲覧時に警告画面が継続的に表示されるためです。
ここでは Windows PC を例に手順を整理します。
ダウンロードした証明書ファイル(.cer)をダブルクリックします。証明書の画面が開いたら 「証明書のインストール」 をクリックします。
「現在のユーザー」または「ローカルコンピューター(全ユーザー対象)」を選択し、「次へ」 をクリックします。
「証明書をすべて次のストアに配置する」 を選択し、「参照」から以下を指定します。
- 指定するストア: 「信頼されたルート証明機関(Trusted Root Certification Authorities)」
「自動的に選択する」や「個人」ストアにインポートすると、ブラウザは証明書を信頼しません。信頼されたルート証明機関を指定すること をおすすめします。
「次へ」→「完了」と進み、最後にセキュリティ警告(インストールしますかの確認)が表示されたら 「はい」 をクリックします。「正しくインポートされました」と表示されればインストール完了です。
大規模環境での配布手段
PC が多数ある環境では、1 台ずつ手動でインポートする運用は現実的ではありません。組織規模に応じて、以下のような配布手段の利用をおすすめします。
- Active Directory のグループポリシー: Windows ドメイン環境での一括配布。最も一般的な方法
- MDM(Microsoft Intune / JAMF など): BYOD や iOS / Android 端末を含む環境
- macOS の場合: 「キーチェーンアクセス」で証明書をインポートし、信頼設定を「常に信頼」に変更
- Firefox: OS 共通の証明書ストアではなく独自の証明書ストアを使うため、別途インポート設定が必要
FortiGate での Deep Inspection 有効化
- 左メニューの Security Profiles > SSL/SSH Inspection を開きます
- デフォルトで用意されている
deep-inspectionプロファイルを使用します(読み取り専用の場合は内容を確認するのみで問題ありません) - CA Certificate が
Fortinet_CA_SSLになっていることを確認します(STEP 1 でダウンロードした証明書と同一であることが前提)
要件に応じて、独自の SSL/SSH プロファイルを新規作成し、対象プロトコルや除外条件をカスタマイズすることも可能です。

通信を制御している既存ポリシーに、SSL/SSH プロファイルを紐づけます。
- Policy & Objects > Firewall Policy を開きます
- LAN から WAN(インターネット)へ抜けるポリシーを選択し、「編集」 をクリックします
- 画面下部の 「セキュリティプロファイル」 セクションで以下を設定します
- SSL Inspection: スイッチを ON
- プロファイル:
deep-inspectionを選択
- 「OK」 で保存します

これで設定は完了です。このポリシーを通る通信に対して、FortiGate が暗号化を復号し、中身の検査を開始します。
Fortinet_CA_Untrusted 証明書を取り扱う際の注意
FortiGate の証明書ストアには、Fortinet_CA_SSL のほかに Fortinet_CA_Untrusted という別の証明書が存在します。この証明書はクライアント PC のブラウザにインポートしないでください。
Fortinet_CA_Untrusted の役割
Fortinet_CA_Untrusted は、接続先サーバーの証明書チェーン検証に失敗した通信 に対して、FortiGate が再署名する際に使う「信頼されない」マーキング用の証明書です。たとえば、自己署名証明書を使っているサイト、有効期限が切れた証明書、信頼されていない CA で署名された証明書を提示するサイトなどに対して使用されます。
ブラウザは、Fortinet_CA_Untrusted で再署名された証明書を受信すると、意図的に警告を表示する動作 になります。これは「接続先サーバー側に問題がある」ことを利用者に知らせるための設計です。
インポートしてはいけない理由
仮に Fortinet_CA_Untrusted をブラウザにインポートしてしまうと、本来は警告が表示されるべき不正な証明書のサイトでも警告が抑制されてしまいます。自己署名証明書の悪意あるサイトにアクセスしても、ブラウザがそれを正常な接続として表示してしまうリスク が生じます。
参考: Fortinet Document Library / Deep inspection(FortiOS 7.6.6)
“If you still get messages about untrusted certificates after importing Fortinet_CA_SSL into your browser, it is due to Fortinet_CA_Untrusted. Never import the Fortinet_CA_Untrusted certificate into your browser.”
(Fortinet_CA_SSLをブラウザにインポートしても untrusted certificate の警告が継続する場合、それはFortinet_CA_Untrusted由来です。Fortinet_CA_Untrusted証明書はブラウザにインポートしないでください)
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/122078/deep-inspection
Fortinet_CA_SSL をクライアントにインポートした後も特定のサイトで証明書警告が継続する場合は、そのサイトの証明書が FortiGate 側で信頼されていない(チェーン検証に失敗している)可能性があります。対象サイト側の証明書状態を確認することをおすすめします。
特定サイトを Deep Inspection から除外する設定
Deep Inspection はすべての HTTPS 通信に適用したい一方で、特定のサイトに対してだけは復号を行いたくないケース があります。プライバシー保護や証明書ピンニング(Certificate Pinning)アプリへの対応として、除外設定を組み合わせる構成が一般的です。
除外を検討すべき主なケース
- 金融機関・医療機関のサイト: プライバシー保護やコンプライアンス上の理由
- 証明書ピンニングを行うアプリ: 銀行アプリ、決済アプリ、LINE、一部の SaaS など。アプリ内に正規の証明書情報が組み込まれており、FortiGate が再署名した証明書を拒否する
- Microsoft 365 / Google Workspace の一部 API: 内部で証明書ピンニングを行うクライアントが含まれる
- 業務上、復号する必要のない特定の信頼済みサイト
除外の設定方法
GUI では、Security Profiles > SSL/SSH Inspection で対象プロファイルを編集し、「Exempt from SSL Inspection」セクションで除外条件を追加します。除外の指定方法は以下の 3 種類です。
- アドレス指定: 特定の IP アドレスやドメイン名を除外
- Web カテゴリ指定: FortiGuard の URL カテゴリ単位で除外(例: 金融、医療)
- Allowlist 指定: FortiGuard が提供する「除外推奨リスト」を利用
CLI での設定例
カテゴリ単位(金融・医療)と特定アドレスを併用して除外する例です。
config firewall ssl-ssh-profile
edit "deep-inspection-custom"
config ssl-exempt
edit 1
set type fortiguard-category
set fortiguard-category 31 # ← Finance and Banking カテゴリ
next
edit 2
set type fortiguard-category
set fortiguard-category 33 # ← Health and Wellness カテゴリ
next
edit 3
set type address
set address "internal-trusted-server"
next
end
next
endfortiguard-category の番号は FortiGuard が定義するカテゴリ ID で、GUI 上では名称で選択できます。除外設定は、Deep Inspection の効果範囲を限定する代わりに、運用上のトラブルを抑える設計手段 として活用します。
設計時に押さえたい制約事項
Deep Inspection の導入前に把握しておきたい制約と前提条件を整理します。
証明書ピンニングへの非対応
Deep Inspection は、証明書ピンニング(Certificate Pinning)を行うアプリには適用できません。証明書ピンニングは、アプリ内に正規の証明書情報を埋め込み、それと一致しない証明書を拒否する仕組みです。FortiGate が再署名した独自証明書はピンニングと一致しないため、これらのアプリは通信が成立しません。銀行アプリ・決済アプリ・LINE・一部の SaaS クライアントが代表例で、これらは除外設定が前提になります。
TLS 1.3 での挙動
TLS 1.3 では、ClientHello 内の SNI 以降が暗号化される動き(ECH: Encrypted Client Hello) が広がりつつあります。SNI が暗号化されると、FortiGate がホスト名ベースで除外判定を行う際の挙動が TLS 1.2 とは異なる場合があります。FortiOS の各バージョンで TLS 1.3 のサポート状況や ECH への対応が異なるため、運用環境の TLS バージョンに応じた検証をおすすめします。
CPU 負荷とスループットへの影響
Deep Inspection は復号と再暗号化の処理を行うため、CPU 負荷が増加し、機種によってはスループットが大きく低下 します。
- SPU(Security Processing Unit)搭載モデル: ハードウェアアクセラレーションで一定程度緩和される
- SPU 非搭載モデル: すべての処理がソフトウェアで実行されるため、実効スループットがデータシート値を大きく下回る傾向
データシートに記載される SSL Inspection スループットは特定の条件下での値です。IPS / アンチウイルス / Web フィルタを同時有効化すると実効値はさらに低下するため、機種選定時に考慮することをおすすめします。
クライアント証明書配布の運用負荷
Deep Inspection を有効化する場合、組織内のすべての PC・スマートフォンに Fortinet_CA_SSL を配布する仕組みが前提になります。新規端末追加時のオンボーディング手順や、証明書失効時の再配布手順を運用設計に含めておくことをおすすめします。
- Windows ドメイン環境: Active Directory のグループポリシーで一括配布
- BYOD 環境: MDM 経由での配布、または利用ガイドの整備
- Firefox ユーザー: OS の証明書ストアではなく Firefox 独自の証明書ストアにインポートが必要
certificate-inspection プロファイルの編集制約
組み込みの certificate-inspection プロファイルは 読み取り専用 で、ポート 443 のみを監視します。検査ポートを追加したい場合や独自の除外設定を加えたい場合は、新規プロファイルを作成する設計になります。
参考: Fortinet Document Library / Certificate inspection(FortiOS 7.6.6)
“The built-in certificate-inspection profile is read-only and only listens on port 443. If you want to make changes, you must create a new certificate inspection profile.”
(組み込みのcertificate-inspectionプロファイルは読み取り専用で、ポート 443 のみを監視します。変更を加えるには新規の Certificate Inspection プロファイルを作成する必要があります)
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/505842/certificate-inspection
動作確認とトラブルシューティング
GUI での動作確認
HTTPS サイトへのアクセス確認
設定対象の PC のブラウザ(Chrome / Edge など)で、https://www.google.com などの HTTPS サイトへアクセスします。「この接続はプライベートではありません」という警告画面が表示されず、通常どおりサイトが表示されれば STEP 2 の証明書インポートが正しく完了しています。
証明書の発行者を確認
アドレスバーの「鍵マーク」をクリックし、証明書の詳細を表示します(「この接続は保護されています」→「証明書は有効です」)。
Issued by(発行者) の欄を確認します。
- 正常: 発行者が
Fortinet_CA_SSL(または FortiGate 側で指定した CA 名)になっている - 未適用: 発行者が
Google Trust Servicesなどの正規 CA のままになっている → SSL インスペクションが効いていない可能性。ファイアウォールポリシーの設定を確認

CLI での確認・操作コマンド
GUI での確認に加えて、CLI を併用すると詳細な切り分けが可能になります。
証明書ストアの確認
FortiGate # config vpn certificate ca
FortiGate (ca) # showFortinet_CA_SSL および Fortinet_CA_Untrusted が登録されていることを確認できます。
SSL/SSH プロファイルの設定確認
FortiGate # config firewall ssl-ssh-profile
FortiGate (ssl-ssh-profile) # show deep-inspectionCA Certificate の指定や、有効化されているプロトコル(HTTPS / SMTPS / POP3S / IMAPS / FTPS)の状況を確認できます。
Deep Inspection が適用されたセッションの確認
FortiGate # diagnose sys session filter dport 443
FortiGate # diagnose sys session listパケットフローのデバッグ
FortiGate # diagnose debug flow filter addr 192.168.1.10
FortiGate # diagnose debug flow show function-name enable
FortiGate # diagnose debug flow trace start 100
FortiGate # diagnose debug enable
# ▼ デバッグ停止
FortiGate # diagnose debug flow trace stop
FortiGate # diagnose debug disable
FortiGate # diagnose debug reset証明書警告が継続する場合の切り分け
Fortinet_CA_SSL をインポートしているにもかかわらず警告が継続する場合は、以下の順で切り分けます。
- 証明書ストアの場所: 「信頼されたルート証明機関」にインポートされているか(「個人」ストアでは効果なし)
- ブラウザの証明書ストア: Firefox を利用している場合、Firefox 独自ストアにもインポートが必要
- 対象サイトの証明書状態: そのサイト自体の証明書に問題がある場合は
Fortinet_CA_Untrustedで再署名されている可能性(Fortinet_CA_Untrustedはインポートしない) - ポリシー適用範囲: 対象 PC が通過するポリシーで Deep Inspection が有効化されているか
まとめ
本記事では、FortiGate の SSL インスペクション(Deep Inspection) の仕組みと導入手順を整理しました。
- SSL インスペクションは、暗号化通信を復号・検査・再暗号化することで HTTPS 経由の脅威を可視化する機能
- 有効化するとブラウザが「不正な証明書」と判定して警告を表示するため、クライアントへの CA 証明書インポートが前提になる
Fortinet_CA_Untrusted証明書はブラウザにインポートしてはいけない。インポートすると本来警告が出るべき不正なサイトへの警告が抑制される- 大規模環境では Active Directory のグループポリシーや MDM での一括配布をおすすめする
- Deep Inspection を採用できないカテゴリは除外設定を組み合わせ、Certificate Inspection との使い分けで運用設計をする
- 証明書ピンニングアプリや TLS 1.3 の動向、SPU 搭載有無によるスループット影響など、設計前に制約事項を把握しておくことで手戻りを防げる
以上、最後までお読みいただきありがとうございました。
