Citrix ADC

クライアント認証

通常の SSL トランザクションでは、セキュリティで保護された接続を介してサーバーに接続しているクライアントは、サーバーの有効性をチェックします。そのためには、SSL トランザクションを開始する前にサーバーの証明書をチェックします。ただし、接続しているクライアントを認証するようにサーバーを構成する必要がある場合もあります。

注: リリース13.0ビルド41.x以降、Citrix ADCアプライアンスは、合計サイズが32 KB以内である限り、複数のレコードに断片化された証明書要求メッセージをサポートします。以前は、サポートされる最大サイズは 16 KB で、フラグメンテーションはサポートされていませんでした。

SSL仮想サーバーでクライアント認証を有効にすると、Citrix ADCアプライアンスはSSLハンドシェイク中にクライアント証明書の入力を要求します。アプライアンスは、発行者の署名や有効期限などの通常の制約について、クライアントから提示された証明書をチェックします。

注: アプライアンスが発行者の署名を検証するには、クライアント証明書を発行したCAの証明書がアプライアンスにインストールされ、クライアントが取引している仮想サーバーにバインドされている必要があります。

証明書が有効な場合、アプライアンスはクライアントはすべてのセキュアなリソースへのアクセスを許可します。ただし、証明書が無効の場合、アプライアンスは SSL ハンドシェイク中にクライアント要求をドロップします。

アプライアンスは、最初に一連の証明書を作成し、クライアント証明書から始まり、クライアントのルートCA証明書(Verisignなど)で終わります。ルート CA 証明書には、1 つ以上の中間 CA 証明書が含まれている場合があります(ルート CA がクライアント証明書を直接発行しない場合)。

Citrix ADCアプライアンスでクライアント認証を有効にする前に、有効なクライアント証明書がクライアントにインストールされていることを確認します。次に、トランザクションを処理する仮想サーバーのクライアント認証を有効にします。最後に、クライアント証明書を発行したCAの証明書をアプライアンス上の仮想サーバーにバインドします。

注: Citrix ADC MPXアプライアンスは、512ビットから4096ビットの証明書とキーのペアサイズをサポートしています。証明書は、次のいずれかのハッシュアルゴリズムを使用して署名する必要があります。

  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512

SDXアプライアンスでは、SSLチップがVPXインスタンスに割り当てられている場合、MPXアプライアンスの証明書とキーのペアサイズのサポートが適用されます。それ以外の場合は、VPXインスタンスの通常の証明書とキーのペアサイズのサポートが適用されます。

Citrix ADC仮想アプライアンス(VPXインスタンス)は、少なくとも512ビットの証明書をサポートします。最大で次のサイズです。

  • 仮想サーバー上の 4096 ビットサーバー証明書
  • サービス上の 4096 ビットクライアント証明書
  • 4096 ビット CA 証明書
  • 物理サーバー上の 4096 ビット証明書
  • 2048 ビットのクライアント証明書 (仮想サーバーでクライアント認証が有効になっている場合)

注:

クライアント証明書の提供

クライアント認証を構成する前に、有効なクライアント証明書をクライアントにインストールする必要があります。クライアント証明書には、Citrix ADCアプライアンスとのセキュアなセッションを作成する特定のクライアントシステムに関する詳細が含まれます。各クライアント証明書は一意であり、1 つのクライアントシステムでのみ使用する必要があります。

クライアント証明書をCAから取得するか、既存のクライアント証明書を使用するか、Citrix ADCアプライアンスでクライアント証明書を生成するかに関係なく、証明書を正しい形式に変換する必要があります。Citrix ADCアプライアンスでは、証明書はPEM形式またはDER形式で保存されるため、クライアントシステムにインストールする前にPKCS #12 形式に変換する必要があります。証明書を変換してクライアントシステムに転送した後、その証明書がそのシステムにインストールされ、SSL トランザクションの一部となるクライアントアプリケーション (Web ブラウザなど) 用に構成されていることを確認します。

証明書を PEM または DER 形式から PKCS #12 形式に変換する方法については、SSL ファイルのインポートと変換を参照してください。

クライアント証明書を生成する方法については、「証明書の作成」を参照してください。

クライアント証明書ベースの認証を有効にする

デフォルトでは、Citrix ADCアプライアンスではクライアント認証が無効になっており、すべてのSSLトランザクションはクライアントを認証せずに続行されます。SSL ハンドシェイクの一環として、クライアント認証をオプションまたは必須に設定できます。

クライアント認証がオプションの場合、アプライアンスはクライアント証明書を要求しますが、クライアントが無効な証明書を提示した場合でも、SSLトランザクションを続行します。クライアント認証が必須の場合、SSLクライアントが有効な証明書を提供しない場合、アプライアンスはSSLハンドシェイクを終了します。

注意: クライアント証明書ベースの認証チェックをオプションに変更する前に、適切なアクセス制御ポリシーを定義することをお勧めします。

注: クライアント認証は、グローバルではなく、個々の SSL 仮想サーバーに対して構成されます。

CLI を使用したクライアント証明書ベースの認証の有効化

コマンドプロンプトで次のコマンドを入力して、クライアント証明書ベースの認証を有効にし、構成を確認します。

set ssl vserver <vServerName> [-clientAuth (ENABLED | DISABLED)] [-clientCert (MANDATORY | OPTIONAL)]
show ssl vserver <vServerName>

例:

set ssl vserver vssl -clientAuth ENABLED -clientCert Mandatory
Done
show ssl vserver vssl

Advanced SSL configuration for VServer vssl:
DH: 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
        HSTS: DISABLED
        HSTS IncludeSubDomains: NO
        HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED

1) CertKey Name: sslckey Server Certificate

1) Policy Name: client_cert_policy Priority: 0

1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done

GUI を使用したクライアント証明書ベースの認証の有効化

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、仮想サーバーを開きます。
  2. [SSL パラメータ] セクションで [クライアント認証] を選択し、[クライアント証明書] の一覧で [必須] を選択します。

注:

クライアント認証が必須に設定されていて、クライアント証明書にポリシー拡張が含まれている場合、証明書の検証は失敗します。リリース 12.0-56.x から、フロントエンド SSL プロファイルでパラメータを設定して、このチェックをスキップできます。このパラメータは、デフォルトでは無効になっています。つまり、デフォルトでチェックが実行されます。

CLI を使用してクライアント認証中にポリシー拡張チェックをスキップする

コマンドプロンプトで、次のように入力します。

set ssl profile ns_default_ssl_profile_frontend -clientauth ENABLED -skipClientCertPolicyCheck ENABLED

Parameter

skipClientCertPolicyCheck

              Control policy extension check, if present inside the X509 certificate chain. Applicable only if client authentication is enabled and client certificate is set to mandatory. Possible values functions as follows:

- ENABLED: Skip the policy check during client authentication.

- DISABLED: Perform policy check during client authentication.

Possible values: ENABLED, DISABLED

Default: DISABLED

GUI を使用してクライアント認証中にポリシー拡張チェックをスキップする

  1. [システム] > [プロファイル] > [SSL プロファイル] に移動します。
  2. 新しいフロントエンドプロファイルを作成するか、既存のフロントエンドプロファイルを編集します。
  3. クライアント認証が有効で、クライアント証明書が [必須] に設定されていることを確認します。
  4. [クライアント証明書ポリシーのチェックをスキップ] を選択します。

証明書ポリシーのチェックをスキップする

CA 証明書を仮想サーバーにバインドする

Citrix ADCアプライアンスに証明書が存在するCAは、クライアント認証に使用されるクライアント証明書を発行する必要があります。この証明書をクライアント認証を実行するCitrix ADC仮想サーバーにバインドします。

CA証明書をSSL仮想サーバーにバインドして、アプライアンスがクライアント証明書の検証時に完全な証明書チェーンを形成できるようにします。そうしないと、証明書チェーンの形成は失敗し、証明書が有効であっても、クライアントはアクセスを拒否されます。

CA 証明書は、任意の順序で SSL 仮想サーバにバインドできます。アプライアンスは、クライアント証明書の検証中に適切な順序を形成します。

たとえば、クライアントが CA_Aによって発行された証明書を提示する場合、 CA_Aは証明書が CA_Bによって発行される中間 CA であり、証明書は信頼されたルート CA Root_CAによって発行されます。この証明書は、これらの3つの証明書はすべて、Citrix ADCアプライアンス上の仮想サーバーにバインドする必要があります。

1 つ以上の証明書を仮想サーバにバインドする手順については、証明書とキーのペアを SSL 仮想サーバーにバインドするを参照してください。

証明書のチェーンを作成する手順については、一連の証明書を作成するを参照してください。

クライアント証明書の検証の厳密な制御

Citrix ADCアプライアンスは、単一のルートCAによって発行された有効な中間CA証明書を受け入れます。つまり、ルートCA証明書のみが仮想サーバーにバインドされ、クライアント証明書とともに送信される中間証明書がそのルートCAによって検証される場合、アプライアンスは証明書チェーンを信頼し、ハンドシェイクは成功します。

ただし、クライアントがハンドシェイクで一連の証明書を送信する場合、証明書が SSL 仮想サーバーにバインドされていない限り、CRL または OCSP レスポンダーを使用して中間証明書を検証することはできません。したがって、中間証明書の 1 つが失効しても、ハンドシェイクは成功します。ハンドシェイクの一部として、SSL 仮想サーバーは、バインドされている CA 証明書のリストを送信します。より厳密に制御するには、その仮想サーバーにバインドされている CA 証明書のいずれかによって署名された証明書のみを受け入れるように SSL 仮想サーバーを構成できます。これを行うには、仮想サーバーにバインドされた SSL プロファイルで ClientAuthUseboundCachain 設定を有効にする必要があります。クライアント証明書が仮想サーバーにバインドされている CA 証明書のいずれかによって署名されていない場合、ハンドシェイクは失敗します。

たとえば、clientcert1 と clientcert2 の 2 つのクライアント証明書が、それぞれ中間証明書 Int-CA-A とInt-CA-B によって署名されているとします。中間証明書は、ルート証明書 Root-CA によって署名されます。Int-CA-A とルート CA は SSL 仮想サーバーにバインドされます。既定の場合 (クライアント認証の境界キャッシュが無効の場合)、クライアント 1 とクライアント 2 の両方が受け入れられます。ただし、ClientAuthUseboundCainが有効になっている場合、Citrix ADCアプライアンスはclientcert1のみを受け入れます。

CLI を使用したクライアント証明書の検証の厳密な制御の有効化

コマンドプロンプトで、次のように入力します。

set ssl profile <name> -ClientAuthUseBoundCAChain Enabled

GUI を使用したクライアント証明書の検証の厳密な制御の有効化

  1. [システム] > [プロファイル] に移動し、[SSL プロファイル] タブを選択して SSL プロファイルを作成するか、既存のプロファイルを選択します。
  2. [バインドされた CA チェーンを使用したクライアント認証を有効にする] を選択します。