SSL ベースのヘッダー挿入の設定
Citrix ADCアプライアンスはすべてのSSL関連処理をサーバーからオフロードするため、サーバーはHTTPトラフィックのみを受信します。状況によっては、サーバーが特定の SSL 情報を必要とします。たとえば、最近の SSL トランザクションのセキュリティ監査では、クライアントサブジェクト名 (X509 証明書に含まれる) をサーバーにログオンする必要があります。
このようなデータは、HTTP ヘッダーに名前と値のペアとして挿入することで、サーバーに送信できます。次のいずれかの操作を実行できます。
- 必要に応じて、クライアント証明書全体のハッシュ (フィンガープリントまたはサムプリントとも呼ばれます) を挿入します。
- 証明書の特定のフィールド(サブジェクト、シリアル番号、発行者、署名、SSL セッション ID、暗号スイートなど)のみを挿入します。
- 証明書の有効性を判断するために使用される前日または後でない日付を挿入します。
SSL ベースの挿入は、HTTP ベースの SSL 仮想サーバおよびサービスに対してのみ有効にできます。TCP ベースの SSL 仮想サーバおよびサービスには適用できません。また、SSL 仮想サーバーでクライアント認証を有効にする必要があります。これは、挿入された値は、認証のために仮想サーバーに提示されるクライアント証明書から取得されるためです。
SSL ベースのヘッダー挿入を設定するには、まず、挿入する特定の情報セットごとに SSL アクションを作成してから、情報を挿入する接続を識別するポリシーを作成します。各ポリシーを作成するときに、ポリシーに関連付けるアクションを指定します。次に、SSL トラフィックを受信する SSL 仮想サーバにポリシーをバインドします。
次の例では、高度なポリシーポリシーを使用します。次の例では、URL /testsite/file5.html に対する要求を受信した場合にクライアント認証を実行するための制御ポリシー (ctrlpol
) が作成されます。クライアント認証が成功した場合にアクション(act1)を実行するためのデータポリシー(datapol
)が作成されます。SSL アクション (act1) が追加され、リクエストを転送する前に証明書の詳細と発行者の名前がリクエストに挿入されます。その他の URL では、クライアント認証は無効になります。その後、ポリシーは SSL トラフィックを受信する SSL 仮想サーバー (ssl_vserver) にバインドされます。
SSL ベースのヘッダー挿入を設定するコマンドライン例
例:
add ssl action act1 -clientCert ENABLED -certHeader mycert -clientcertissuer ENABLED -certIssuerHeader myissuer
add ssl policy datapol -rule HTTP.REQ.URL.EQ("/testsite/file5.html") -action act1
add ssl policy ctrlpol -rule HTTP.REQ.URL.EQ("/testsite/file5.html") -action CLIENTAUTH
bind ssl vserver ssl_vserver -policyName ctrlpol -priority 1
bind ssl vserver ssl_vserver -policyName datapol -priority 1
Done
<!--NeedCopy-->
GUI を使用した SSL ベースのヘッダー挿入の設定
-
[Traffic Management]>[SSL]>[Policies] に移動します。
-
詳細ペインで、[Actions] タブ、[Add] をクリックします。
-
[ SSL アクションの作成 ] ダイアログボックスで、次のパラメータを設定します。
- 名前*
- クライアント証明書
- 証明書タグ
- クライアント証明書発行者
- 発行者タグ
* 必須パラメータ
-
[ 作成] をクリックし、[ 閉じる] をクリックします。
-
タブで、[ 追加 ] をクリックして制御ポリシーを作成します。
-
[SSL ポリシーの作成(Create SSL Policy )] ダイアログボックスで、次のパラメータを設定します。
- 名前*
- 式
- アクションのリクエスト
* 必須パラメータ
-
[ 作成] をクリックし、[ 閉じる] をクリックします。
-
ステップ 5 ~ 7 を繰り返して、データポリシーを作成します。
-
ナビゲーションウィンドウで、[ SSL オフロード] を展開し、[ 仮想サーバー] をクリックします。
-
詳細ペインで、仮想サーバーの一覧から、SSL ポリシーをバインドする仮想サーバーを選択し、[ 開く] をクリックします。
-
[ 仮想サーバーの構成 (SSL オフロード) ] ダイアログボックスで、[ SSL 設定]、[ SSL ポリシー] の順にクリックします。
-
[SSL ポリシーのバインド/バインド解除] ダイアログボックスで、[ ポリシーの挿入] をクリックします。[ ポリシー名] で、手順 5 ~ 7 で作成したポリシーを選択します。
-
「 OK」をクリックし、「 閉じる」をクリックします。ステータスバーに、ポリシーが正常にバインドされたことを示すメッセージが表示されます。
-
ステップ 12 と 13 を繰り返し、ステップ 8 で作成したポリシーを選択します。
HTTP ヘッダーにクライアント証明書のサムプリントを挿入するための SSL ポリシーアクションを構成する
Citrix ADCアプライアンスは、バックエンドサーバーに送信される要求のヘッダーへの証明書のサムプリント(フィンガープリントとも呼ばれます)の挿入をサポートするようになりました。クライアント認証が有効になっている場合、アプライアンスは証明書のサムプリントを計算し、SSL ポリシーアクションを使用してサムプリントをリクエストに挿入します。サーバーはサムプリントを検索し、一致する場合は安全なアクセスを許可します。
クライアント証明書のフィンガープリントを有効にするように SSL アクションを設定し、クライアント証明書のフィンガープリントを挿入するヘッダー名と、フィンガープリント値を計算するダイジェスト(ハッシュ値)を指定します。Citrix ADCアプライアンスは、SHA1およびSHA2(SHA224、SHA256、SHA384、SHA512)ダイジェストをサポートしています。アプライアンスは、クライアント証明書の DER エンコーディングの指定されたダイジェストを計算することによって、フィンガープリント値を導出します。次に、このアクションを指定する SSL ポリシーを作成し、そのポリシーを SSL 仮想サーバーにバインドします。
CLI を使用してクライアント証明書のサムプリントを挿入するための SSL アクションを構成する
コマンドプロンプトで次のように入力します。
add ssl action <name> -clientCertFingerprint ( ENABLED | DISABLED ) -certFingerprintHeader <string> -certFingerprintDigest <certFingerprintDigest>
<!--NeedCopy-->
引数:
clientCertFingerprint:
Web サーバーに送信される要求の HTTP ヘッダーに証明書のフィンガープリントを挿入します。フィンガープリントは、クライアント証明書の DER エンコーディングの指定されたハッシュ値(SHA256 など)を計算することによって導出されます。
certFingerprintHeader:
クライアント証明書フィンガープリントを挿入するヘッダーの名前。
certFingerprintDigest:
クライアント証明書のフィンガープリントを計算するために使用されるダイジェストアルゴリズム。
可能な値:SHA1、SHA224、SHA256、SHA384、SHA512
例:
add ssl action act1 -clientcertfingerprint ENABLED -certfingerprintdigest SHA1 -certfingerprintheader example
Done
<!--NeedCopy-->
sh ssl action act1
1) Name: act1
Type: Data Insertion
Cert Fingerprint Header: ENABLED
Cert-Fingerprint Tag: example
Cert-Fingerprint Digest Algorithm: SHA1
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
add ssl policy pol1 -rule true -action act1
Done
<!--NeedCopy-->
bind ssl vserver v1 -policyName pol1 -priority 10
Done
<!--NeedCopy-->
sh ssl vserver v1
Advanced SSL configuration for VServer v1:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Client Auth: ENABLED Client Cert Required: Mandatory
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
SSLv2: DISABLED SSLv3: DISABLED TLSv1.0: DISABLED TLSv1.1: ENABLED TLSv1.2: DISABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: intca6 CA Certificate CRLCheck: Mandatory CA_Name Sent
2) CertKey Name: intca5 CA Certificate CRLCheck: Mandatory CA_Name Sent
3) CertKey Name: intca4 CA Certificate CRLCheck: Mandatory CA_Name Sent
4) CertKey Name: intca3 CA Certificate CRLCheck: Mandatory CA_Name Sent
5) CertKey Name: intca2 CA Certificate CRLCheck: Mandatory CA_Name Sent
6) CertKey Name: intca1 CA Certificate CRLCheck: Mandatory CA_Name Sent
Data policy
1) Policy Name: pol1 Priority: 10
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
GUI を使用してクライアント証明書のサムプリントを挿入するための SSL アクションを構成する
- [ トラフィック管理] > [SSL] > [ポリシー] に移動します。
- 詳細ウィンドウで、[ SSL アクション ] タブを選択し、[ 追加] をクリックします。
- [ SSL アクションの作成 ] ダイアログボックスで、次のパラメータを設定します。
- 名前*
- クライアント証明書のフィンガープリント
- 指紋タグ
- 指紋ダイジェスト *必須パラメータ
- [作成] をクリックします。
- [ SSL ポリシー ] タブを選択し、[ 追加] をクリックします。
- [SSL ポリシーの作成(Create SSL Policy )] ダイアログボックスで、次のパラメータを設定します。
- 名前*
- アクション
- 式 *必須パラメータ
- [作成] をクリックします。
- [ トラフィック管理] > [負荷分散] > [仮想サーバー] に移動します。
- 詳細ウィンドウで、SSL 仮想サーバーの一覧から、SSL ポリシーをバインドする仮想サーバーを選択し、[ 編集] をクリックします。
- [ 詳細設定] で、[ SSL ポリシー] をクリックします。
- [SSL Policy] の下をクリックし、[ Policy Binding ] ダイアログボックスで、前に作成したポリシーを選択し、優先度を割り当てます。
- [Bind] をクリックします。