FortiGateのSSL-VPN認証にSecureW2発行のクライアント証明書を使用する

検証概要

今回は、弊社のネットワーク環境にあるFortiGateと弊社が提供するクラウド型認証ソリューションのSecureW2との連携について検証を行いました。本記事は 「リモートVPNを行う際、FortiGateのSSL-VPNを使用し、SecureW2発行のクライアント証明書で認証を行う」 ことをテーマとした検証レポートですので、すでにFortiGateのSSL-VPNを利用している方、SSL-VPNによるリモートVPNの導入を検討している方はぜひ最後までご覧ください。

今回の検証では、SSL-VPNを行うデバイスはWindows 11とmacOSの2つを利用していきます。

製品名 メーカー 役割・機能 バージョン
FortiGate 40F Fortinet ファイアウォール・VPNサーバー v7.4.5
SecureW2 JoinNow SecureW2 RADIUSサーバー・認証局/発行局 7.7.1.GA1
ThinkPad E15 Lenovo クライアントPC Windows 11 23H2
MacBook Pro (M3 Pro) Apple クライアントPC macOS Sequoia 15.1.1
FortiGate 40F

今回の検証における連携構成

本構成においてSSL-VPNが行われるイメージを下図に示します。
細かい認証のフローは後述する動作概要にてご確認ください。

連携構成

今回の検証におけるSecureW2はデバイスにクライアント証明書を、FortiGateにサーバー証明書を発行する役割を持つマネージドPKIです。マネージドPKIとは、証明書の発行・更新・失効を含むPKI全体を管理するためのサービスです。クライアント端末とFortiGateはユーザー名、パスワード、クライアント・サーバー証明書による相互認証が成功するとSSL-VPNトンネルを確立し、以降はクライアント端末が暗号化された通信を用いて社内LANに接続が可能になります。

前提条件

今回の検証では、以下の項目を前提条件としています。

  • SecureW2の管理者アカウントをお持ちであること
  • デバイスにSecureW2から発行された有効なクライアント証明書が配布されていること
    • 初期設定では、クライアント証明書はユーザー証明書である必要がありますが、設定を行うことでデバイス証明書を使用することができます。(設定方法はこちら
  • FortiGateの管理者アカウントをお持ちであること
  • FortiGateのファイアウォールポリシーの設定(接続した後のIPアドレス割当、アクセス許可)が行われていること
  • RAM 2GB以下の一部のモデルをご利用の場合にはFortiOSのバージョンが7.6.0以前であること(7.6.0以降は一部の筐体でSSL-VPNの機能が無効化されているため。詳しくはこちら

※本記事ではリモートVPNの利用を想定しており、ユーザー認証にはFortiGateローカルサーバーを選択しております。

動作概要

動作概要

SSL-VPNの流れは以下の通りです。

  1. クライアント端末がFortiGateに対してSSL-VPNリクエストを送信します
  2. FortiGateはクライアント端末に対してサーバー証明書を提示します
  3. 提示されたサーバー証明書の正当性が確認できた場合、クライアント端末はFortiGateに対してユーザー名、パスワード、クライアント証明書を送信します
  4. FortiGateは、登録された認証情報を元にユーザー名、パスワードを認証し、加えてクライアント証明書の正当性(発行元CA・有効性)を確認し、認証が成功した場合はSSL-VPNリクエストを許可します
  5. クライアント端末とFortiGateの間にSSL-VPNトンネルが確立され、安全な通信が可能になります

パスワードのみの認証では、ブルートフォース攻撃やレインボーテーブル攻撃に対する耐性が低く、セキュリティリスクが高まります。そのため、クライアント証明書認証を導入することで、正規のデバイス以外のアクセスを拒否し、不正アクセスや外部からの攻撃を防ぐことができます。

作業詳細

作業詳細

ルート・中間認証局の証明書、サーバー証明書のアップロード、SSL-VPNの設定を行っていただくと、SecureW2から配布された証明書を用いた認証でSSL-VPNを行うことができます。ユーザーとユーザーグループの設定においては、FortiGate内部にユーザーを登録する内部認証以外にも、外部のRADIUS・LDAPサーバーを使用したユーザー認証を行うことが可能です。弊社取扱製品であるIDaaS製品 OneLoginではクラウド型のRADIUS・LDAPエンドポイントを提供しており、IDaaSによる統合されたユーザー認証と組み合わせてご利用頂くことができます。

補足

今回FortiGateでSSL-VPNをする際にFortiClient VPNというソフトウェアを使用しております。FortiClient VPNでは基本的に証明書がどのストア / キーチェーンに格納されていても使用可能ですが、Windows 11のローカルコンピューター証明書ストアにある証明書を使用する場合は後述する設定を行う必要があります。

  1. FortiClient VPNを起動し、[設定] をクリックします。
    補足1
  2. [バックアップ] をクリックし、confファイルを任意の場所に保存します。パスワードの設定が必須なので行ってください。
    補足2
  3. confファイルをメモ帳などのソフトで開き、以下のコードを追加し、保存を行なってください。<allow_standard_user_use_system_cert>1</allow_standard_user_use_system_cert>
    補足3
  4. [リストア]をクリックし、confファイルを選択後パスワードを入力し [OK] をクリックします。インポートされたのを確認したら設定は完了です。
    補足4
    こちらは実際にローカルコンピューター証明書ストアにある証明書を利用しているときの動画です。

基本的なFortiGateとSecureW2の設定

FortiGateへのSecureW2証明書のアップロード

SecureW2でルート認証局・中間認証局の証明書をダウンロードし、サーバー証明書を発行します。そのあと、それらの証明書をFortiGateにアップロードします。この操作により、クライアント証明書認証を行うための信頼関係を構築します。

  1. JoinNow Management Portalへログインし、PKI > Certificate Authorities をクリックします。
    設定手順_1
  2. 使用しているルート認証局・中間認証局の証明書をダウンロードします。
    本記事では、以下の認証局を使用します。
    • ルート認証局 : Pentio Dev Device Root CA
    • 中間認証局 : Pentio Dev Device Intermediate CA
    それぞれの認証局の行から、赤枠部をクリックしてダウンロードします。
    設定手順_2
  3. Certificate Templates > Server Certificate template の赤枠部をクリックして、編集をします。
    設定手順_3
  4. サーバー証明書のテンプレートを以下のように編集し、[Update]をクリックします。
    設定手順_4
  5. FortiGateのサーバー証明書を発行していきます。
    PKI > Create Certificate をクリックします。
    設定手順_5
  6. 以下のように、サーバー証明書を発行するための情報を入力します。設定が完了したら、[Create]をクリックします。
    設定手順_6
  7. パスフレーズを要求されるので、お好きなパスワードを入力し[Submit]をクリックします。
    以上でサーバー証明書が発行され、ブラウザからダウンロードされます。
    設定手順_7
    以上で、ルート認証局・中間認証局の証明書、サーバー証明書の準備ができました。
  8. 次にこれらを FortiGate にアップロードします。
    FortiGateの管理者ポータルへログインし、システム > 表示機能設定 をクリックします。
    設定手順_8
  9. 証明書のチェックを入れ、[適用]をクリックします。
    設定手順_9
  10. 証明書フィールドが出現するので、システム > 証明書 をクリックします。
    設定手順_10
  11. インポート > CA 証明書 をクリックします。
    設定手順_11
  12. タイプ で ファイル を選択し、[アップロード]をクリックします。
    設定手順_12
  13. 先程ダウンロードした ルート認証局の証明書 ( 例 : Pentio Dev Device Root CA ) を選択します。
    設定手順_13
  14. 正常に選択されたら、[OK]をクリックします。
    設定手順_14
  15. 同様に中間認証局もアップロードします。
    ルート・中間認証局の証明書が正常にインポートされると、エクスターナルCA証明書の中に表示されます。
    設定手順_15
  16. 次にサーバー証明書をインポートします。インポート > 証明書 をクリックします。
    設定手順_16
  17. [証明書をインポート]をクリックします。
    設定手順_17
  18. タイプで PKSC12証明書を選択し、[ファイルをアップロード]をクリックします。
    設定手順_18
  19. 先程作成した FortiGate用のサーバー証明書を選択し、[開く]を押します。
    設定手順_19
  20. 正常にアップロードされたら、パスワードに設定したパスフレーズを入力し、[作成]をクリックします。
    設定手順_20
  21. 正常にサーバー証明書がアップロードされると、証明書の枠に追加されます。
    設定手順_21

以上で、クライアント証明書認証を実現するために必要である信頼関係の構築設定が完了しました。

SSL-VPN の設定

次に、FortiClientを利用してSSL-VPN接続する際にクライアント証明書を要求する設定を行います。
この設定により、アップロードした認証局が発行したクライアント証明書を持っているエンドユーザのみVPNに接続できるようになります。

VPN > SSL-VPN設定 を開きます。

項目名 設定値
サーバー証明書 【アップロードしたサーバ証明書】(選択)
クライアント証明書を要求 【トグルをオンにする】
SSL-VPNの設定_1

以上の設定でSSL-VPNでクライアント証明書認証を有効化できました。

動作確認

Windows 11

  1. FortiClient を開き、VPN接続の編集を行います。クライアント証明書は認証に用いるものを選択してください。設定できたら[保存]をクリックします。
    動作検証_Win1
  2. パスワードを入力して、[接続]をクリックして接続要求をします。
    動作検証_Win2
  3. 正常に接続することができました。
    動作検証_Win3

macOS

  1. FortiClient を開き、VPN接続の編集を行います。クライアント証明書は認証に用いるものを選択してください。設定できたら[保存]をクリックします。
    動作確認_macOS_1
  2. パスワードを入力して、[接続]をクリックして接続要求をします。
    動作確認_macOS_2
  3. 正常に接続することができました。
    動作確認_macOS_3
  4. SSL-VPN接続時のログを確認します。ログ&レポート > システムイベント > ログ の順にクリックし、タブからVPNイベントを選択してください。
    動作確認_macOS_3

    アクションが「tunnel-up」となっているログを2つ探します。理由が「login successfully」「tunnel established」となっていれば問題なくSSL-VPNの接続ができています。

    動作確認_macOS_3

おわりに

今回は、FortiGateのSSL-VPNの認証方式に証明書認証を追加し、SecureW2から発行されたクライアント証明書を用いたリモートVPNの検証を行いました。

従来のSSL-VPNは、ユーザー名とパスワードのみの認証が一般的であり、ブルートフォース攻撃やレインボーテーブル攻撃などに対する耐性が低いという課題があります。このため、多要素認証(MFA)の導入が推奨されており、証明書認証を追加することで、不正なデバイスからのアクセスを防ぐことができます。

SecureW2のマネージドPKI機能を利用すると、証明書の発行や失効をクラウド上でリアルタイムに管理できます。 また、用途ごとに異なる中間認証局を作成できるため、802.1X認証による社内LAN接続用の証明書とSSL-VPN専用の証明書を分けて発行したり、一つの証明書で複数の用途に対応させることも可能です。

FortiGateは、ファイアウォール、VPNゲートウェイ、無線LANコントローラーの機能を統合しており、SecureW2のPKI機能と組み合わせることで、統一的な証明書認証の管理が可能になります。FortiGateとSecureW2を組み合わせることで、セキュリティを強化しながら、より柔軟なアクセス制御が実現できます。ぜひ、FortiGateとSecureW2の導入を併せて検討してみてはいかがでしょうか。

以上で、「FortiGateのSSL-VPN認証にクライアント証明書を使用する」検証レポートを終わります。

*本サイトに掲載されている製品またはサービスなどの名称及びロゴは、各社の商標または登録商標です。