クライアント証明書認証
オンラインバンキングの Web サイトや従業員の個人情報を含む Web サイトなど、機密性の高いコンテンツを含む Web サイトでは、認証のためにクライアント証明書が必要になる場合があります。クライアント側の証明書属性に基づいてユーザを認証するように認証、承認、および監査を構成するには、まずトラフィック管理仮想サーバでクライアント認証を有効にし、ルート証明書を認証仮想サーバにバインドします。次に、2 つのオプションのいずれかを実装します。認証仮想サーバーのデフォルトの認証タイプをCERTとして構成するか、クライアント証明書に基づいてユーザーを認証するためにNetScalerが実行する必要があることを定義する証明書アクションを作成できます。いずれの場合も、認証サーバーは CRL をサポートしている必要があります。クライアント証明書の subjectCN フィールドまたは別の指定されたフィールドからユーザー名を抽出するように ADC を構成します。
認証ポリシーが構成されておらず、グローバルカスケードが構成されていない認証仮想サーバーにユーザーがログオンしようとすると、証明書の指定されたフィールドからユーザー名情報が抽出されます。必須フィールドが抽出されると、認証は成功します。SSL ハンドシェイク中にユーザーが有効な証明書を提供しなかった場合、またはユーザー名の抽出が失敗した場合、認証は失敗します。クライアント証明書を検証した後、ADC はユーザーにログオンページを表示します。
次の手順は、機能する認証、承認、および監査構成がすでに作成されていることを前提としており、クライアント証明書を使用して認証を有効にする方法のみを説明しています。また、これらの手順では、ルート証明書とクライアント証明書を取得し、ADC の /nsconfig/ssl ディレクトリに配置したことを前提としています。
クライアント証明書認証の構成
GUI を使用してクライアント証明書パラメータを設定
-
CA 証明書をインストールし、認証仮想サーバーにバインドします。
- [セキュリティ]>[AAA-アプリケーショントラフィック]>[仮想サーバ]に移動します。
- 表示される「 認証仮想サーバー 」ページで、クライアント証明書認証を処理するように構成する仮想サーバーを選択し、「 編集」をクリックします。
- 「 認証仮想サーバー 」ページで、「 証明書 」セクションに移動し、右矢印「>」をクリックします。
-
「 CA 証明書バインディング 」ページで、CA 証明書を選択し、他の必須フィールドを更新して、「 バインド」をクリックします。
- CA 証明書がない場合は、[ 追加] を選択します。
- 「 証明書のインストール 」ページで、次のフィールドを更新して「 インストール 」をクリックし、「 閉じる」をクリックします。
- 証明書とキーのペア名:証明書と秘密鍵のペアの名前
- 証明書ファイル名:証明書とキーのペアを形成するために使用される証明書ファイルの名前。証明書ファイルは、NetScalerのハードディスクドライブまたはソリッドステートドライブにある必要があります。証明書をデフォルト以外の場所に保存すると、高可用性設定に不整合が生じる可能性があります。デフォルトのパスは /nsconfig/ssl/です。
- 通知期間:証明書の有効期限が切れる前に、NetScalerが証明書の有効期限が近づいていることを管理者に通知する日数。
- 期限切れ時に通知:このオプションを有効にすると、証明書の有効期限が近づいたときにアラートを受け取ることができます。
- CA 証明書がインストールされたら、 CA 証明書バインディングページに移動し 、認証仮想サーバーにバインドします。
- [セキュリティ] > [AAA-アプリケーショントラフィック] > [仮想サーバ ] ページに戻ります。
- [ セキュリティ] > [AAA-アプリケーショントラフィック] > [ポリシー] > [認証] > [基本ポリシー] > [CERT]に移動します。
- クライアント証明書認証を処理するように設定するポリシーを選択し、[ 編集] をクリックします。
- 「 認証証明書ポリシーの設定 」ページで、「 サーバー 」ドロップダウンリストに移動し、クライアント証明書認証を処理するように構成されている仮想サーバーを選択します。
-
[OK] をクリックします。
CLI を使用してクライアント証明書のパラメータを設定します
コマンドプロンプトで、次のコマンドを表示されている順序で入力して、証明書を構成し、構成を確認します。
add ssl certKey <certkeyName> -cert <certFile> -key <keyFile> -password -inform <inform> -expiryMonitor <expiryMonitor> -notificationPeriod <notificationPeriod>
bind ssl certKey [<certkeyName>] [-ocspResponder <string>] [-priority <positive_integer>]
show ssl certKey [<certkeyName>]
set aaa parameter -defaultAuthType CERT
show aaa parameter
set aaa certParams -userNameField "Subject:CN"
show aaa certParams
<!--NeedCopy-->
GUI を使用してクライアント証明書の詳細認証ポリシーを設定
-
CA 証明書をインストールし、証明書とキーのペアにバインドします。
- [セキュリティ]>[AAA-アプリケーショントラフィック]>[仮想サーバ]に移動します。
- 表示される「 認証仮想サーバー 」ページで、クライアント証明書認証を処理するように構成する仮想サーバーを選択し、「 編集」をクリックします。
- 「 認証仮想サーバー 」ページで、「 証明書 」セクションに移動し、右矢印「>」をクリックします。
- 「 CA 証明書バインディング 」ページで、CA 証明書を選択し、他の必須フィールドを更新して、「 バインド」をクリックします。
- CA 証明書がない場合は、[ 追加] を選択します。
- 「 証明書のインストール 」ページで、次のフィールドを更新して「 インストール 」をクリックし、「 閉じる」をクリックします。
- 証明書とキーのペア名:証明書と秘密鍵のペアの名前
- 証明書ファイル名:証明書とキーのペアを形成するために使用される証明書ファイルの名前。証明書ファイルは、NetScalerのハードディスクドライブまたはソリッドステートドライブにある必要があります。証明書をデフォルト以外の場所に保存すると、高可用性設定に不整合が生じる可能性があります。デフォルトのパスは /nsconfig/ssl/です。
- 通知期間:証明書の有効期限が切れる前に、NetScalerが証明書の有効期限が近づいていることを管理者に通知する日数。
- 期限切れ時に通知:このオプションを有効にすると、証明書の有効期限が近づいたときにアラートを受け取ることができます。
- CA 証明書がインストールされたら、 CA 証明書バインディングページに移動し 、手順 4 を繰り返します。
-
[セキュリティ] > [AAA-アプリケーショントラフィック] > [仮想サーバ ] ページに戻ります。
注:
仮想サーバーの有効なCA証明書とサーバー証明書をインポートした場合は、 手順1と2をスキップできます。
- セキュリティ > AAA-アプリケーショントラフィック > ポリシー > 認証 > 詳細ポリシーに移動し、 ポリシーを選択します。
-
認証ポリシーページで 、次のいずれかを実行します。
- ポリシーを作成するには、[ Add] をクリックします。
- 既存のポリシーを変更するには、ポリシーを選択し、[ 編集] をクリックします。
-
「 認証ポリシーの作成 」ページまたは「 認証ポリシーの設定 」ページで、パラメータの値を入力または選択します。
- 名前:ポリシー名。以前に設定したポリシーの名前は変更できません。
- アクションタイプ:認証アクションのタイプ。
- アクション:ポリシーが一致した場合に実行される認証アクションの名前。既存の認証アクションを選択するか、[ 追加 ] をクリックしてアクションを作成できます。
- 表現:指定したアクションを適用する接続を選択するルール。ルールは、シンプル (「true」はすべてのトラフィックを選択) または複雑にすることができます。式を入力するには、まず式ウィンドウの下の左端のドロップダウンリストで式の種類を選択し、次に式テキスト領域に式を直接入力するか、[追加] をクリックして [式の追加] ダイアログボックスを開き、その中のドロップダウンリストを使用して式を定義します。
- ログアクション:認証リクエストがこのポリシーに一致する場合に使用する監査アクションの名前。既存の監査アクションを選択するか、[ 追加 ] をクリックしてアクションを作成できます。
- コメント:この認証ポリシーが適用されるトラフィックの種類を説明するコメントを入力できます。この情報は入力しなくても構いません。
- 「 作成」または「OK」をクリックし、「閉じる」をクリックします。
クライアント証明書パススルー
NetScalerは、ユーザー認証にクライアント証明書を必要とする保護されたアプリケーションにクライアント証明書を渡すように構成できるようになりました。ADCは最初にユーザーを認証し、次にクライアント証明書を要求に挿入してアプリケーションに送信します。この機能は、適切な SSL ポリシーを追加することによって構成されます。
ユーザーがクライアント証明書を提示したときのこの機能の正確な動作は、VPN 仮想サーバーの設定によって異なります。
- VPN 仮想サーバーがクライアント証明書を受け入れるように構成されているが、それを必要としない場合、ADC は証明書を要求に挿入し、保護されたアプリケーションに要求を転送します。
- VPN仮想サーバーでクライアント証明書認証が無効になっている場合、ADCは認証プロトコルを再ネゴシエーションし、ユーザーを再認証してから、クライアント証明書をヘッダーに挿入し、要求を保護されたアプリケーションに転送します。
- VPN仮想サーバーがクライアント証明書認証を要求するように構成されている場合、ADCはクライアント証明書を使用してユーザーを認証し、ヘッダーに証明書を挿入し、要求を保護されたアプリケーションに転送します。
いずれの場合も、クライアント証明書のパススルーを次のように構成します。
コマンドラインインターフェイスを使用してクライアント証明書パススルーを作成および構成する
コマンドプロンプトで、次のコマンドを入力します:
add vpn vserver <name> SSL <IP> 443
<!--NeedCopy-->
nameには、仮想サーバーの名前を置き換えます。名前には、1〰127のASCII文字が文字またはアンダースコア (_) で始まり、英字、数字、アンダースコア (#)、ピリオド (.)、スペース、コロン (:)、アットマーク (@)、等号 (=)、ハイフン (-) のみを含む必要があります。<IP>
の場合は、仮想サーバに割り当てられた IP アドレスを置き換えます。
set ssl vserver <name> -clientAuth ENABLED -clientCert <clientcert>
<!--NeedCopy-->
<name>
では、作成した仮想サーバーの名前を置き換えます。<clientCert>
には、次の値のいずれかを代入します。
- [disabled]:VPN 仮想サーバでのクライアント証明書認証を無効にします。
- [必須(mandatory)]:認証にクライアント証明書を要求するように VPN 仮想サーバを設定します。
- optional:クライアント証明書認証を許可するが、要求しないように VPN 仮想サーバを設定します。
bind vpn vserver <name> -policy local
<!--NeedCopy-->
<name>
で、作成した VPN 仮想サーバーの名前を置き換えます。
bind vpn vserver <name> -policy cert
<!--NeedCopy-->
<name>
の場合は、作成した VPN 仮想サーバーの名前を置き換えます。
bind ssl vserver <name> -certkeyName <certkeyname>
<!--NeedCopy-->
<name>
では、作成した仮想サーバーの名前を置き換えます。<certkeyName>
では、クライアント証明書キーを代用します。
bind ssl vserver <name> -certkeyName <cacertkeyname> -CA -ocspCheck Optional
<!--NeedCopy-->
<name>
では、作成した仮想サーバーの名前を置き換えます。<cacertkeyName>
の場合は、CA 証明書キーを代用します。
add ssl action <actname> -clientCert ENABLED -certHeader CLIENT-CERT
<!--NeedCopy-->
<actname>
では、SSL アクションの名前を置き換えます。
add ssl policy <polname> -rule true -action <actname>
<!--NeedCopy-->
<polname>
では、新しい SSL ポリシーの名前を置き換えます。<actname>
では、作成した SSL アクションの名前を置き換えます。
bind ssl vserver <name> -policyName <polname> -priority 10
<!--NeedCopy-->
<name>
で、VPN 仮想サーバーの名前を置き換えます。
例
add vpn vserver vs-certpassthru SSL 10.121.250.75 443
set ssl vserver vs-certpassthru -clientAuth ENABLED -clientCert optional
bind vpn vserver vs-certpassthru -policy local
bind vpn vserver vs-certpassthru -policy cert
bind ssl vserver vs-certpassthru -certkeyName mycertKey
bind ssl vserver vs-certpassthru -certkeyName mycertKey -CA -ocspCheck Optional
add ssl action act-certpassthru -clientCert ENABLED -certHeader CLIENT-CERT
add ssl policy pol-certpassthru -rule true -action act-certpassthru
bind ssl vserver vs-certpassthru -policyName pol-certpassthru -priority 10
<!--NeedCopy-->