クライアント証明書認証
オンラインバンキングの Web サイトや従業員の個人情報を含む Web サイトなど、機密性の高いコンテンツを含む Web サイトでは、認証のためにクライアント証明書が必要になる場合があります。クライアント側の証明書属性に基づいてユーザを認証するように認証、承認、および監査を構成するには、まずトラフィック管理仮想サーバでクライアント認証を有効にし、ルート証明書を認証仮想サーバにバインドします。次に、2 つのオプションのいずれかを実装します。認証仮想サーバーのデフォルトの認証タイプをCERTとして構成するか、クライアント証明書に基づいてユーザーを認証するためにCitrix ADCが実行する必要があることを定義する証明書アクションを作成できます。いずれの場合も、認証サーバーは CRL をサポートしている必要があります。クライアント証明書の subjectCN フィールドまたは別の指定されたフィールドからユーザー名を抽出するように ADC を構成します。
認証ポリシーが構成されておらず、グローバルカスケードが構成されていない認証仮想サーバーにユーザーがログオンしようとすると、証明書の指定されたフィールドからユーザー名情報が抽出されます。必須フィールドが抽出されると、認証は成功します。SSL ハンドシェイク中にユーザーが有効な証明書を提供しなかった場合、またはユーザー名の抽出が失敗した場合、認証は失敗します。クライアント証明書を検証した後、ADC はユーザーにログオンページを表示します。
次の手順は、機能する認証、承認、および監査構成がすでに作成されていることを前提としており、クライアント証明書を使用して認証を有効にする方法のみを説明しています。また、これらの手順では、ルート証明書とクライアント証明書を取得し、ADC の /nsconfig/ssl ディレクトリに配置したことを前提としています。
クライアント証明書認証の構成
コマンドラインインターフェイスを使用して認証、承認、および監査クライアント証明書パラメーターを構成するには
コマンドプロンプトで、次のコマンドを表示されている順序で入力して、証明書を構成し、構成を確認します。
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-->
構成ユーティリティを使用して認証、承認、および監査クライアント証明書パラメーターを構成するには
- セキュリティ > AAA-アプリケーショントラフィック > 仮想サーバに移動します。
- 詳細ウィンドウで、クライアント証明書認証を処理するように構成する仮想サーバーを選択し、[ 編集] をクリックします。
- [ 構成 ]ページの[ 証明書]で、右矢印(>)をクリックして[CA 証明書キー]インストールダイアログを開きます。
- [ CA 証明書キー ] ダイアログボックスで、[ 挿入] をクリックします。
- [ CA 証明書キー-SSL 証明書 ] ダイアログボックスで、[ インストール] をクリックします。
- [ 証明書のインストール (Install Certificate)] ダイアログボックスで、次のパラメータを設定します。これらの名前は、次に示すように CLI パラメータ名に対応します。
- 証明書とキーのペア名*—certKeyname
- 証明書ファイル名 — certFile
- キーファイル名 — keyFile
- 証明書形式—inform
- パスワード-password
- 証明書バンドル — bundle
- 有効期限が切れると通知—expiryMonitor
- 通知期間 — notificationPeriod
- [ インストール] をクリックし、[ 閉じる] をクリックします。
- [ CA 証明書キー ] ダイアログボックスの [ 証明書 ] リストで、ルート証明書を選択します。
- [保存] をクリックします。
- [ Back ] をクリックして、メインの設定画面に戻ります。
- セキュリティ > AAA-アプリケーショントラフィック > ポリシー > 認証 > 証明書に移動します。
- 詳細ウィンドウで、クライアント証明書認証を処理するように構成するポリシーを選択し、[ 編集] をクリックします。
- [ 認証証明書ポリシーの構成 ] ダイアログの [サーバー] ドロップダウンリストで、クライアント証明書認証を処理するように構成した仮想サーバーを選択します。
- OKをクリックします。ステータスバーに、構成が正常に完了したことを示すメッセージが表示されます。
高度なポリシーを使用したクライアント証明書認証
以下は、高度なポリシーを使用してCitrix ADCでクライアント証明書認証を構成する手順です。
- セキュリティ > AAA-アプリケーショントラフィック > 仮想サーバに移動します。
-
詳細ウィンドウで、クライアント証明書認証を処理するように構成する仮想サーバーを選択し、[ 編集] をクリックします。
注:
仮想サーバーの有効なCA証明書とサーバー証明書をインポートした場合は、 手順3から手順10までスキップできます。
- [ 構成 ]ページの[ 証明書]で、[ ** ]をクリックして[ **CA 証明書キーインストール ]ダイアログボックスを開きます。
- [ CA 証明書キー ] ダイアログボックスで、[ 挿入] をクリックします。
- [ CA 証明書キー-SSL 証明書 ] ダイアログボックスで、[ インストール] をクリックします。
-
[ 証明書のインストール (Install Certificate)] ダイアログボックスで、次のパラメータを設定します。これらの名前は、次に示すように CLI パラメータ名に対応します。
- 証明書とキーのペア名—certKeyName
- 証明書ファイル名 — certFile
- キーファイル名 — keyFile
- 証明書形式—inform
- パスワード-password
- 証明書バンドル — bundle
- 有効期限が切れると通知—expiryMonitor
- 通知期間 — notificationPeriod
- [ インストール] をクリックし、[閉じる] をクリックします。
- [ CA Cert Key ] ダイアログボックスの [証明書] リストで、ルート証明書を選択します。
- [保存] をクリックします。
- [ Back ] をクリックして、メインの設定画面に戻ります。
- セキュリティ > AAA-アプリケーショントラフィック > ポリシー > 認証 > 詳細ポリシーに移動し、 ポリシーを選択します。
-
詳細ウィンドウで、次のいずれかの操作を行います。
- 新しいポリシーを作成するには、[追加( Add)] をクリックします。
- 既存のポリシーを変更するには、ポリシーを選択し、[ 編集] をクリックします。
-
[ 認証ポリシーの作成 ] または [ 認証ポリシーの構成 ] ダイアログボックスで、パラメータの値を入力または選択します。
- Name -ポリシー名。以前に設定したポリシーでは変更できません。
- アクションタイプ-証明書を選択
- Action :ポリシーに関連付ける認証アクション(プロファイル)。既存の認証アクションを選択するか、プラス記号をクリックして適切なタイプの新しいアクションを作成できます。
- Log Action -ポリシーに関連付ける監査アクション。既存の監査アクションを選択するか、プラス記号をクリックして新しいアクションを作成できます。
- 式 -指定したアクションを適用する接続を選択するルール。ルールは、シンプル (「true」はすべてのトラフィックを選択) または複雑にすることができます。式を入力するには、まず [式] ウィンドウの下にある左端のドロップダウンリストで式の種類を選択し、次に式テキスト領域に式を直接入力するか、[追加] をクリックして [式の追加] ダイアログボックスを開き、その中のドロップダウンリストを使用して式。)
- [Comment ]:この認証ポリシーが適用されるトラフィックのタイプを説明するコメントを入力できます。オプションです。
- 「 作成」または「OK」をクリックし、「閉じる」をクリックします。ポリシーを作成した場合、そのポリシーは [認証ポリシーおよびサーバ] ページに表示されます。
クライアント証明書パススルー
Citrix ADCは、ユーザー認証にクライアント証明書を必要とする保護されたアプリケーションにクライアント証明書を渡すように構成できるようになりました。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-->