💨

【図解】I-FILTERのSSLデコードの仕組みを、証明書の基礎から完全に理解する

に公開

【図解】I-FILTERのSSLデコードの仕組みを、証明書の基礎から完全に理解する

社内のプロキシサーバー(I-FILTER)の移行や運用をしていると、必ず直面するのが**「証明書」**の問題です。

「なぜ警告画面が出るのか?」「どの端末にどの証明書を入れればいいのか?」

これらを正しく理解するために、一般的な通信からI-FILTER特有の動きまでを整理しました。


1. 基本:普通のWebサイト(Google)との通信

まずは、プロキシを通さない、一般的なPCとWebサイト(例:Google)の通信についてです。

この仕組みは**「パスポートと入国審査」**に例えると分かりやすくなります。

登場人物

役割 説明
Webサーバー Google 旅行者
クライアント PC 入国審査官
認証局 DigiCertなど 政府(信頼できる第三者機関)

仕組み

ステップ1:基盤(事前準備)

  • PC(WindowsやブラウザOSに)には、あらかじめ**「信頼できる認証局のリスト(政府リスト)」**が最初からインストールされています。

ステップ2:提示

  • Googleは「私はGoogleです」と、認証局に署名してもらった**サーバー証明書(パスポート)**をPCに提示します。

ステップ3:検証

  • PCは、提示された証明書の発行元を見ます。
  • 「ふむ、これは『DigiCert』が発行しているな。私のリストにも載っている信頼できる機関だ」と判断します。

ステップ4:通信確立

  • 信頼が確認できれば、暗号化通信が始まります。

2. 応用:社内Webサイト(オレオレ認証局)との通信

次に、社内で構築したWebサイトなど、**自己署名証明書(オレオレ証明書)**を使っているケースです。

仕組み(問題点)

社内サーバー管理者が「自分で認証局を立てて、自分でサーバー証明書を発行」しています。いわば**「手作りのパスポート」**です。

ステップ1:提示

  • 社内Webサーバーは「手作りの証明書」をPCに提示します。

ステップ2:検証(エラー)

  • PCは発行元を見ますが、「こんな認証局(社内の管理者)なんて知らない!リストに載っていない!」となり、セキュリティ警告を表示して通信をブロックします。
❌ セキュリティ警告
「このサイトのセキュリティ証明書は信頼できません」

解決策

PCに「この手作りパスポートの発行元(社内認証局)は信頼していいよ」と教えてあげる必要があります。

必須作業

  1. 社内認証局の**ルート証明書(CA証明書)**を取得
  2. クライアントPCの「信頼されたルート証明機関」にインポート

これを行うことで、Googleのときと同じように「ああ、これは知っている発行元(社内管理者)だね」となり、通信が可能になります。


3. 実践:I-FILTERを経由した通信(SSLデコード)

ここからが本題です。I-FILTERがHTTPS通信の中身をチェック(SSLデコード)する場合、通信は以下の2つの区間に分断されます。

[PC] <---(区間B)---> [I-FILTER] <---(区間A)---> [Webサーバー]

このとき、I-FILTERは「仲介者」として特殊な動きをします。

区間B:I-FILTER ⇔ PC(なりすましと偽装)

I-FILTERは通信の中身を見るために、Webサーバーになりすまします。

偽装

  • I-FILTERは、アクセス先に合わせてその場で「偽の証明書」を動的に作成します。
  • 例:Googleへのアクセスなら、Google名義の偽証明書を作成

署名

  • その偽証明書に、I-FILTER自身の秘密鍵(default_ca)で署名をしてPCに渡します。

検証

  • そのままだとPCは「I-FILTERなんて知らない発行元だ!」と警告を出します。

【必須作業】

I-FILTERのルート証明書である default_ca.cer を、クライアントPCに配布・インストールしておく必要があります。これにより、PCはI-FILTERが偽造した証明書を「正規のもの」として受け入れます。

区間A:I-FILTER ⇔ Webサーバー(I-FILTERがクライアントになる)

ここが見落とされがちなポイントです。Webサーバー側から見ると、**「I-FILTERサーバー」こそがWeb閲覧者(クライアント)**になります。

接続先がGoogleの場合

  • I-FILTERサーバー(Windows OS)はDigiCertなどを知っているので問題ありません。
  • 通信は正常に確立されます。

接続先が社内Webサイト(オレオレ証明書)の場合

  • I-FILTERサーバー自身が「社内認証局」を知らないと、I-FILTERがWebサイトへの接続を拒否してしまいます。
  • Webサーバー側から見ると、「不正な証明書を提示してくるクライアント」として判定されます。

【必須作業】

I-FILTERがインストールされているサーバー自身の証明書ストアに、接続先(社内Web)のルート証明書をインストールする必要があります。


4. まとめ:誰が誰を信頼すべきか

I-FILTER経由で社内Webサイトを見る場合、双方向の信頼関係が必要です。

通信区間 クライアント役 サーバー役 必要な証明書 インストール場所
PC ⇔ I-FILTER PC I-FILTER(偽装) default_ca.cer
(I-FILTERのCA証明書)
クライアントPC
I-FILTER ⇔ Web I-FILTER 社内Web 社内WebのCA証明書
(オレオレCAのルート証明書)
I-FILTERサーバー

フロー図

【通常のWebアクセス(Google)】

PC ──┐
     │ default_ca.cer      Google
     │ インストール済み    ↓
     │ ✓信頼される        Google配下の正規CA
 I-FILTER────→ Webサーバー

     └─→ DigiCert等(Windows OSに認識済み)

【社内Webアクセス(I-FILTER経由)】

PC ──┐
     │ default_ca.cer ✓     社内Web
     │ インストール済み     ↓
     │ ✓信頼される         社内CA(オレオレ)
 I-FILTER────→ Webサーバー

     └─→ 社内CAをインストール必須


5. トラブルシューティング用チェックリスト

証明書エラーが発生したときは、以下のチェックリストで原因を特定します。

クライアント側エラーの場合

以下の症状が出ているとき:

  • PCでブラウザが警告画面を表示
  • 「セキュリティ証明書が信頼できない」というメッセージ

チェック項目

  • クライアントPCに default_ca.cer はインストールされているか?
  • default_ca.cer の有効期限は切れていないか?
  • 配布している default_ca.cer は、現在のI-FILTER管理画面からダウンロードしたものと一致しているか?
  • PCを再起動して、証明書ストアがリロードされたか?
  • ブラウザのキャッシュをクリアしたか?

対処方法

  1. I-FILTER管理画面から最新の default_ca.cer をダウンロード
  2. 以下の場所にインストール
    • Windows: Windows証明書ストア → 「信頼されたルート証明機関」
    • macOS: キーチェーン → システム → 「常に信頼」
    • Linux: /etc/ssl/certs/ または各ディストリビューション依存
  3. PCを再起動

I-FILTER側エラーの場合

以下の症状が出ているとき:

  • PCから見てアクセスがタイムアウト
  • I-FILTERのログに「Certificate verification failed」が出ている

チェック項目

  • (社内Web接続時)I-FILTERサーバー自身に、社内Webのルート証明書はインストールされているか?
  • I-FILTERサーバーの証明書ストアをリロードしたか?
  • I-FILTERサービスを再起動したか?
  • 社内WebのCA証明書の有効期限は切れていないか?

対処方法

  1. 社内Web認証局のルート証明書を取得
  2. I-FILTERサーバー(Windows OS)の証明書ストアにインストール
    • Windows証明書ストア → 「信頼されたルート証明機関」に配置
  3. I-FILTERサービスを再起動
# PowerShellでの確認例
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like "*社内CA*"}

6. デバッグコマンド集

Windows証明書ストアの確認

# ルート証明書一覧表示
Get-ChildItem Cert:\LocalMachine\Root | Format-List Subject, Thumbprint, NotAfter

# 特定の証明書を検索
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like "*default*"}

証明書のインストール

# ローカルマシンのルート証明書ストアにインポート
Import-Certificate -FilePath "C:\path\to\default_ca.cer" -CertStoreLocation "Cert:\LocalMachine\Root"

# 現在のユーザーのルート証明書ストアにインポート
Import-Certificate -FilePath "C:\path\to\default_ca.cer" -CertStoreLocation "Cert:\CurrentUser\Root"

OpenSSLでの証明書確認

# 証明書の内容を確認
openssl x509 -in default_ca.cer -text -noout

# 証明書の有効期限を確認
openssl x509 -in default_ca.cer -noout -dates

# 証明書のサムプリント(フィンガープリント)を確認
openssl x509 -in default_ca.cer -noout -fingerprint

I-FILTERログの確認

# I-FILTER固有のエラーログを確認
# ※ ログ位置はインストール環境に依存

# 同期エラーや証明書エラーを検索
grep -i "certificate\|verification\|ssl" /var/log/i-filter/*

7. よくある質問(FAQ)

Q1. default_ca.cerの有効期限が近づいている場合は?

A: I-FILTER管理画面から新しい default_ca.cer をダウンロードして、全クライアントPCに配布してください。古い証明書は削除し、新しい証明書に置き換えます。この作業は、有効期限切れ前に完了させることが重要です。

Q2. 社内WebのCA証明書をI-FILTERに配布する最良の方法は?

A: 以下の方法が推奨されます:

  1. グループポリシーを使用して配布(Active Directory環境)
  2. **Mobile Device Management (MDM)**ツールを使用
  3. 構成管理ツール(Ansible、Puppetなど)で一括配布
  4. 最終手段としてマニュアル配布

Q3. I-FILTER経由でのWebアクセスが遅い場合、証明書が原因の可能性は?

A: 可能性は低いですが、完全には否定できません。以下を確認してください:

  • I-FILTERのCPU使用率は高いか?(SSL/TLSデコードは計算量が多い)
  • ディスク I/Oは高いか?
  • ネットワーク帯域幅は飽和していないか?

証明書関連のエラーではなく、通信が正常に確立されているのに遅い場合は、ハードウェアスペックや設定を見直してください。

Q4. Linux上でI-FILTERを実行している場合、証明書の配置場所は異なるか?

A: はい、異なります。一般的には以下の場所に配置します:

  • /etc/ssl/certs/ - CA証明書ディレクトリ
  • /etc/pki/ca-trust/extracted/ - CentOS/RHEL系

ディストリビューション固有のコマンドで配置してください:

# Debian/Ubuntu系
sudo update-ca-certificates

# CentOS/RHEL系
sudo update-ca-trust

# 手動配置の場合
sudo cp default_ca.cer /etc/ssl/certs/
sudo update-ca-certificates --fresh

8. まとめ:完全な理解へ

この仕組みさえ理解していれば、証明書エラーが出たときに「どの区間で信頼関係が結べていないのか」をすぐに特定できるようになります。

状態 原因 解決策
PCでセキュリティ警告が表示 default_ca.cerがPCにない、または期限切れ PCに最新のdefault_ca.cerをインストール
アクセスがタイムアウト I-FILTERが社内Webの証明書を信頼していない I-FILTERサーバーに社内CA証明書をインストール
間欠的なエラーが発生 証明書ストアのリロードされていない サービス再起動またはOS再起動
特定のWebサイトだけエラー そのサイトの中間CA証明書がない 中間CA証明書も合わせてインストール

運用のコツ

  1. 定期的な監視: 全クライアントPCの default_ca.cer インストール状況を把握する
  2. 事前更新: 証明書の有効期限が切れる30日前には、新しい証明書を配布開始する
  3. ドキュメント化: 社内ナレッジベースに配置手順を記載し、サポート負荷を削減する
  4. ログ監視: I-FILTERのログから証明書エラーを定期的にチェックする

これで、I-FILTERの証明書運用に必要な知識がすべて揃いました。社内運用で直面する様々な課題に対応できるようになるはずです。

Discussion