SSL ベースのヘッダー挿入の設定
Citrix ADCアプライアンスは、SSL関連のすべての処理をサーバーからオフロードするため、サーバーはHTTPトラフィックのみを受信します。状況によっては、サーバに特定の SSL 情報が必要な場合があります。たとえば、最近の SSL トランザクションのセキュリティ監査では、クライアントサブジェクト名 (X509 証明書に含まれる) をサーバーにログオンする必要があります。
このようなデータは、名前と値のペアとして HTTP ヘッダーに挿入することでサーバーに送信できます。次のいずれかの操作を実行できます。
- 必要に応じて、クライアント証明書全体のハッシュ(指紋または拇印とも呼ばれます)を挿入します。
- 件名、シリアル番号、発行者、署名、SSLセッションID、暗号スイートなど、証明書の特定のフィールドのみを挿入します。
- 証明書の有効性を判断するために使用される前日または後日を挿入します。
SSL ベースの挿入は、HTTP ベースの SSL 仮想サーバおよびサービスに対してのみ有効にできます。TCP ベースの SSL 仮想サーバーおよびサービスには適用できません。また、SSL 仮想サーバーでクライアント認証を有効にする必要があります。これは、挿入された値は、認証のために仮想サーバーに提示されるクライアント証明書から取得されるためです。
SSL ベースのヘッダー挿入を設定するには、まず挿入する特定の情報セットごとに SSL アクションを作成し、次に情報を挿入する接続を識別するポリシーを作成します。各ポリシーを作成するときに、ポリシーに関連付けるアクションを指定します。次に、SSLトラフィックを受信するSSL仮想サーバーにポリシーをバインドします。
次の例では、デフォルトの構文ポリシーを使用します。次の例では、URLの要求を受信した場合にクライアント認証を実行するために、制御ポリシー(ctrlpol
)が作成されます。 /testsite/file5.html. クライアント認証が成功した場合にアクション(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アクション の作成]ダイアログボックスで、次のパラメーターを設定します。
- Name*
- クライアント証明書
- 証明書タグ
- クライアント証明書発行者
- 発行者タグ
*必須パラメータ
-
[Create] をクリックしてから、[Close] をクリックします。
-
タブで、[ 追加 ]をクリックして制御ポリシーを作成します。
-
[SSL ポリシーの作成] ダイアログボックスで、次のパラメータを設定します。
- Name*
- 式
- アクションのリクエスト
*必須パラメータ
-
[Create] をクリックしてから、[Close] をクリックします。
-
手順 5 ~ 7 を繰り返して、データポリシーを作成します。
-
ナビゲーションペインで、[ SSLオフロード]を展開し、[ 仮想サーバー]をクリックします。
-
詳細ペインで、仮想サーバーのリストから、SSLポリシーをバインドする仮想サーバーを選択し、[ 開く]をクリックします。
-
[ 仮想サーバー の構成(SSLオフロード) ]ダイアログボックスで、[ SSL設定]をクリックし、[ SSLポリシー]をクリックします。
-
の中に Bind/Unbind [SSLポリシー]ダイアログボックスで、[ ポリシーの挿入]をクリックします。[ ポリシー名]で、手順5〜7で作成したポリシーを選択します。
-
[OK] をクリックし、[Close] をクリックします。ポリシーが正常にバインドされたことを示すメッセージがステータスバーに表示されます。
-
手順 12 と 13 を繰り返し、手順 8 で作成したポリシーを選択します。
HTTP ヘッダーにクライアント証明書のサムプリントを挿入するための SSL ポリシーアクションの構成
Citrix ADCアプライアンスでは、バックエンドサーバーに送信される要求のヘッダーに、証明書のサムプリント(フィンガープリントとも呼ばれます)を挿入できるようになりました。クライアント認証が有効になっている場合、アプライアンスは証明書のサムプリントを計算し、SSLポリシーアクションを使用してサムプリントをリクエストに挿入します。サーバーはサムプリントを検索し、一致するものがあればセキュリティで保護されたアクセスを許可します。
クライアント証明書のフィンガープリントを有効にするSSLアクションを構成し、クライアント証明書のフィンガープリントを挿入するためのヘッダー名を指定し、フィンガープリント値を計算するためのダイジェスト(ハッシュ値)を指定します。このアプライアンスは、SHA1ダイジェCitrix ADC およびSHA2(SHA224、SHA256、SHA384、SHA512)ダイジェストをサポートします。アプライアンスは、クライアント証明書の DER エンコーディングの指定されたダイジェストを計算することによって、フィンガープリント値を取得します。次に、このアクションを指定する SSL ポリシーを作成し、SSL 仮想サーバーにポリシーをバインドします。
CLI を使用してクライアント証明書のサムプリントを挿入するための SSL アクションを構成する
コマンドプロンプトで次のように入力します。
add ssl action <name> -clientCertFingerprint ( ENABLED | DISABLED ) -certFingerprintHeader <string> -certFingerprintDigest <certFingerprintDigest>
<!--NeedCopy-->
引数:
クライアント証明書フィンガープリント:
証明書のフィンガープリントを Web サーバーに送信する要求の HTTP ヘッダーに挿入します。フィンガープリントは、クライアント証明書の DER エンコードの指定されたハッシュ値 (SHA256 など) を計算することによって導出されます。
証明書フィンガープリントヘッダー:
クライアント証明書のフィンガープリントを挿入するヘッダーの名前。
証明書フィンガープリントダイジェスト:
クライアント証明書のフィンガープリントを計算するために使用されるダイジェストアルゴリズム。
指定可能な値: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アクション の作成]ダイアログボックスで、次のパラメーターを設定します。
- Name*
- クライアント証明書のフィンガープリント
- 指紋タグ
- FingerPrintダイジェスト *A 必要なパラメータ
- [作成] をクリックします。
- 「 SSL ポリシー 」タブを選択し、「 追加 」をクリックします。
-
[SSL ポリシーの作成] ダイアログボックスで、次のパラメータを設定します。
- Name*
- 操作(アクション)
- 式 *必須パラメータ
- [作成] をクリックします。
- Traffic Management > Load Balancing > Virtual Serversに移動します。
- 詳細ウィンドウで、SSL 仮想サーバーの一覧から、SSL ポリシーをバインドする仮想サーバーを選択し、[編集] をクリックします。
- [詳細設定]で、[SSL ポリシー] をクリックします。
- [SSL Policy] の下のをクリックし、[Policy Binding] ダイアログボックスで、以前に作成したポリシーを選択し、優先順位を割り当てます。
- [バインド] をクリックします。