CatoクラウドのTLS Inspection機能で躓く証明書の仕組み

はじめに

インターネットで Web サイトにアクセスするとき現在は HTTPS を用いるのが一般的であり、HTTPS を用いるとクライアント PC 上のブラウザと Web サーバとの間で暗号化通信を行えます。一方で、ネットワーク管理者やシステム管理者の立場になると、HTTPS 通信の中身をファイアウォール等では確認できないため、ウイルス・マルウェアのチェックや不正なサイトへのアクセスの検知が行えません。

Cato クラウドでは TLS Inspection という機能が用意されており、HTTPS 通信であってもウイルス・マルウェアチェックや不正サイトへのアクセス検知などのセキュリティ対策を一元的に行えるようになっています。

しかし、この機能を有効にすると TLS 証明書関連で躓いたり別の課題が生じたりすることが多いため、本記事では躓く原因でもある証明書関連の仕組みや課題について概要を解説します。

通常のインターネットアクセスにおけるサーバ証明書

まず、Cato 網を経由せずにインターネットにアクセスするときのサーバ証明書を確認してみます。

弊社の Web サイト にブラウザでアクセスすると、次の図のように GlobalSign によって発行された OV のワイルドカード証明書であることが確認できます。

また、OpenSSL コマンドを用いて “openssl s_client -connect www.scsk.jp:443” のように実行すればブラウザを使わなくても証明書の内容を確認でき、その中でも証明書のチェーンは次のようになっていました。

Certificate chain
 0 s:C = JP, ST = Tokyo, L = Koto-ku, O = SCSK Corporation, CN = *.scsk.jp
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Jan 11 01:47:27 2023 GMT; NotAfter: Feb 12 01:47:26 2024 GMT
 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
   i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Nov 21 00:00:00 2018 GMT; NotAfter: Nov 21 00:00:00 2028 GMT

この結果からも、弊社の Web サイトでは GlobalSign によって署名された証明書を利用していることが確認できます。

Cato網を経由したインターネットアクセスにおけるサーバ証明書

次に、Cato 網を経由したインターネットアクセスにおけるサーバ証明書を確認してみます。今回は Windows マシンで Cato Client を用いて Cato 網に接続して試しました。

弊社の Web サイト にブラウザでアクセスすると、次の図のように “Cato Networks server tok2catod7a” という認証局によって発行された証明書に変わっていました。

OpenSSL コマンドでも確認すると、”Cato Networks server tok2catod7a” は中間認証局によって署名された証明書に変わっており、その上位には “Cato Networks CA” というルート認証局があるという結果になっていました。

Certificate chain
 0 s:CN = www.scsk.jp
   i:CN = Cato Networks server tok2catod7a
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Sep 21 02:10:22 2023 GMT; NotAfter: Nov 23 02:10:22 2023 GMT
 1 s:CN = Cato Networks server tok2catod7a
   i:C = IL, L = Tel Aviv, O = Cato Networks, CN = Cato Networks CA
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Aug  2 14:40:37 2023 GMT; NotAfter: Oct 11 14:40:37 2025 GMT
 2 s:C = IL, L = Tel Aviv, O = Cato Networks, CN = Cato Networks CA
   i:C = IL, L = Tel Aviv, O = Cato Networks, CN = Cato Networks CA
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Nov  1 09:32:12 2015 GMT; NotAfter: Oct 29 09:32:12 2025 GMT

TLS Inspection 機能を有効にしていると、Cato クラウドがクライアントPC と Web サーバ等の間に入って通信を中継します。このとき、Cato クラウドはクライアント PC に対して TLS サーバとして振る舞うとともに、実際の Web サーバ等に対する TLS クライアントとしても振る舞います。上記の確認結果は、Cato クラウドが TLS サーバとして振る舞うために、Cato 自身でサーバ証明書を発行していることを示しています。

さらに、Windows の証明書ストアを確認すると、”Cato Networks CA” が信頼されたルート証明機関として追加されていました。

クライアント PC では Cato クラウドのルート認証局を OS にて信頼することで、Cato によって発行されたサーバ証明書の検証が成功し、ブラウザでは証明書エラーになることなく通常通りインターネットにアクセスできるようになっています。

なお、Cato のルート認証局の証明書は Cato Client とともにインストールされています。Cato Client をインストールしていない PC には Cato のルート認証局証明書がインストールされていないため、Socket を使ってインターネットにアクセスするとブラウザでは次のように証明書エラーが表示されてしまいます。

TLS Inspection 機能を有効にしている場合、Socket を使って Cato 網を経由してインターネットにアクセスする PC には、ルート認証局証明書を別途インストールする必要があるという点は重要なので覚えておきましょう。

なお、Cato クラウドの標準のルート認証局 “Cato Networks CA” の代わりに、独自のルート認証局を用意し、その認証局を使って Cato クラウドにサーバ証明書を発行させることもできます。他のソリューションから Cato クラウドに乗り換える場合などで、既に独自のルート認証局証明書が PC にインストールされている場合には、その機能を使えば Cato クラウドの証明書をインストールしなくても済みます。

ブラウザ以外で証明書エラーが発生する場合

前述の通り、PC に Cato のルート認証局証明書をインストールしていないと証明書エラーとなってしまいますが、インストールしていても証明書エラーになる場合があります。一般的なブラウザ (Microsoft Edge や Google Chrome など) は OS の証明書ストアを参照するため基本的には問題は生じないものの、一部のソフトウェアは OS の証明書ストアを参照せずに自身で認証局ストアを持っているために問題が生じます。

証明書エラーが発生する場合、そのソフトウェアの証明書ストアに Cato のルート認証局証明書をインストールして解決するのが良く、Knowledge Base の How to Install the Cato Certificate のページではいくつかのソフトウェアについて証明書のインストール方法が案内されています。しかし、他にも多数のソフトウェアで証明書エラーが発生し、証明書のインストール方法は各ソフトウェアしだいですので、画一的な対応方法を案内できないというのが実情でもあります。

証明書エラーが出る場合は、まず OS に証明書がインストールされているか確認しましょう。OS に証明書がインストールされているのであれば、証明書エラーが出るソフトウェアにインストールが必要ですので、各ソフトウェアの開発元にお問い合わせいただくのが確実です。

なお、証明書の検証を無効にする機能がそのソフトウェアに用意されているのであれば、それを使って問題を回避することもできますが、これはあまり望ましい方法ではありません。

証明書をインストールできない場合

OSやソフトウェアに証明書をインストールできれば良いのですが、そうはいかないケースもあります。

PC ・サーバ・モバイル以外にも様々な機器がインターネットに接続しますが、そのような機器の大半は証明書をインストールできないでしょう。実際 TLS Inspection が原因でオフィスの複合機の一部機能が動作しなくなるという事例がありますし、機器のファームウェアの自動アップデートやその他インターネットと連携する機能が動作しなくなるという事象が発生することも予想されます。

また、PC 上で動かすソフトウェアに証明書をインストールする機能や検証を無効化する機能が用意されておらず、ソフトウェアが動作しないという事例も多々あります。

このような場合、該当する通信を TLS Inspection 機能のバイパス対象にすれば解決できます。イベントログのサブタイプ “Internet Firewall” で正常に動作しない機器がどの Web サーバ等と通信しているか確認し、その Web サーバのホスト名やIPアドレスをバイパス設定に追加してください。

証明書をインストールしてもエラーとなる場合

ソフトウェア内に Web サーバ等の証明書が埋め込まれているケースもあります。一般に証明書のピンニングと呼びますが、この仕組みはソフトウェアが本来期待する Web サーバとは異なる Web サーバと通信してしまったとしても、そのソフトウェア自身が気付けるようにする仕組みです。金融機関などセキュリティを重視するサービスが提供するソフトウェアやモバイルアプリで採用されていることがあります。

ソフトウェアにこの仕組みが導入されていると、たとえ OS に Cato クラウドのルート認証局の証明書がインストールされていたとしても、TLS Inspection 機能によって発行された証明書とソフトウェア内に埋め込まれた証明書が一致しないため、ソフトウェア側では証明書エラーとなって正常に動作しないということになります。

このような場合も、TLS Inspection 機能のバイパス対象にすることで解決できます。

Untrusted Server Certificates 設定について

TLS Inspection 機能には “Untrusted Server Certificates” という重要な設定項目があります。

この設定項目のデフォルト値は Allow ですが、Prompt または Block とするのが望ましい です。

TLS Inspection において、Cato クラウドが実際の Web サーバ等に対する TLS クライアントとして振る舞う際、Cato クラウドは Web サーバの証明書が正当なものであるかどうか検証しています。”Untrusted Server Certificates” は、Web サーバの証明書でエラーが発生する場合にクライアント PC に対してどのように振る舞うかを決める設定項目です。

この項目を Allow としていると、実際の Web サーバの証明書エラーが発生したとしても、Cato クラウドはエラーを無視して Web サーバに対して HTTPS リクエストを送信し、そのレスポンスをクライアント PC に対して返すようになります。このとき、クライアント PC では証明書エラーが発生せず、Web サーバの証明書エラーが発生していることに気付くこともなくアクセスできてしまいます。

仮に DNS サーバの侵害等により 中間者攻撃を受ける状況 になったとき、TLS Inspection 機能を利用しない場合は TLS の仕組みによってユーザは攻撃に気付くことができますが、Allow を設定していると攻撃に気付くことができない という問題があります。

Allow ではなく Prompt や Block を設定していれば、クライアント PC では証明書エラーは発生しないものの Cato の警告・ブロック画面が表示されるため、ユーザは中間者攻撃に気付くことができます。

警告画面の例 (Prompt の場合)

ブロック画面の例 (Block の場合)

ただし、Prompt または Block にすると、別の問題を引き起こす場合もあります。

一部のセキュリティ製品は、サーバ証明書を独自に署名・発行し、クライアント PC にも証明書をインストールして利用するものがあります。このような場合、Cato クラウドがセキュリティ製品のサーバにアクセスする際に証明書エラーが発生するため、Prompt または Block を設定しているとセキュリティ製品には警告・ブロック画面のレスポンスが返り、期待通り動作しなくなります。

この問題を解消するには、そのような製品が通信するサーバを TLS Inspection 機能のバイパス対象に設定する必要があります。Cato のイベントログでは証明書エラーが発生するサーバに関するイベントが “TLS” というサブタイプで記録されていますので、証明書エラーになっているサーバのホスト名やIPアドレスを調べて、バイパス対象に設定を追加して解消しましょう。

まとめ

Cato クラウドの TLS Inspection 機能で躓く原因である TLS 証明書関連の仕組みや課題について解説しました。

TLS Inspection 機能は非常に有用ではありますが、躓くことが多い機能でもありますので、躓いた時の解決のために本記事の内容をお役立てください。解決方法がわからない場合は弊社のサポートまで気軽にお問合せください。

タイトルとURLをコピーしました