Citrix ADC

Azure Key Vaultのサポート

Citrix ADCアプライアンスは、オンプレミス展開用に外部HSM(SafeNetおよびThales)と統合されます。クラウドデプロイの場合、ADC アプライアンスは Azure Key Vault と統合されます。アプライアンスは、パブリッククラウドドメインでの秘密キーの管理とセキュリティを容易にするために、秘密キーを Key Vault に保存します。複数のデータセンターやクラウドプロバイダーに展開されている ADC アプライアンスのキーを異なる場所に保管して管理する必要がなくなりました。

HSM でバックアップされたキーが提供された Azure Key Vault Premium の料金範囲で ADC を使用すると、FIPS 140-2 レベル 2 のコンプライアンスが提供されます。

Azure Key Vault は、Microsoftが提供する標準サービスです。Azure キーボールトの詳細については、Microsoft Azure のドキュメントを参照してください。

注: Citrix ADCとAzure Key Vaultとの統合は、TLS 1.3プロトコルでサポートされています。

アーキテクチャの概要

Azure Key Vault は、Azure クラウドにシークレットを安全に保存するためのサービスです。キーを Azure Key Vault に保存することで、キーが盗まれる可能性を減らすことができます。Key Vault の設定が完了したら、キーを保管できます。Key Vault で秘密鍵操作を実行するように ADC アプライアンス上の仮想サーバーを構成します。ADC アプライアンスは、SSL ハンドシェイクごとにキーにアクセスします。

次の図は、認証後に Azure Active Directory からアクセストークンを取得するプロセスを示しています。このトークンは、秘密鍵を使用する暗号操作の REST API 呼び出しで使用されます。

アクセストークンの取得

次の図は、一般的な RSA ハンドシェイクを示しています。公開キーを使用して暗号化されたクライアントキー交換 (CKE) メッセージは、Key Vault に保存されている秘密キーを使用して復号されます。

キーボールトハンドシェイク

ECDHEハンドシェイクでは、Citrix ADCアプライアンスから送信されたサーバーキー交換(SCE)メッセージは、Key Vaultに保存されている秘密キーを使用して署名されます。

前提条件

  1. Azure サブスクリプションが必要です。

  2. (オプション) Linux マシンに Azure CLI をインストールします。手順については、Azure のドキュメントhttps://docs.microsoft.com/en-us/cli/azure/install-azure-cli-apt?view=azure-cli-latestを参照してください 。

  3. ADC アプライアンスでエンティティを構成する前に、Azure Portal で構成を完了します。

ADC Azure キーボールト統合を構成する

最初に Azure Portal で構成を実行し、続いて ADC アプライアンスで構成を実行します。

Azure ポータルで次の手順を実行します

次のフローチャートは、Azure Portal で必要な構成の概要を示しています。

Azure ポータルの手順

  1. Azure Active Directory にアプリとサービスのプリンシパルを作成します
  2. リソースグループに Key Vault を作成します。
  3. Key Vault で署名および復号化操作を実行するようにアプリとサービスプリンシパルを設定します。
  4. 次のいずれかの方法で Key Vault にキーを作成します。

    1. キーファイルをインポートする。
    2. 証明書を生成する。

上記の手順を構成するコマンドについては、https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principalsのAzure のドキュメントを参照してください。

ADC アプライアンスで次の手順を実行します

次のフローチャートは、ADC アプライアンスで必要な設定の概要を示しています。

ADC アプライアンスの手順

  1. DNS サーバーを構成します。
  2. ルート証明書を構成して、Azure によって提示された証明書を検証します。
  3. Azure アプリケーションを作成します。
  4. Azure キーボールトエンティティを作成します。
  5. HSM キーを作成します。
  6. 証明書とキーのペアを作成します。
  7. 証明書とキーのペアを仮想サーバーにバインドします。

DNS サーバーを構成する

キーボールトホストと Azure Active Directory エンドポイントの名前解決には、DNS サーバーが必要です。

CLI を使用して DNS サーバーを設定するには

コマンドプロンプトで入力します。

add dns nameserver <IP address>
<!--NeedCopy-->

例:

add dns nameserver 192.0.2.150
<!--NeedCopy-->

GUI を使用して DNS サーバーを構成するには

  1. [ トラフィック管理] > [DNS] > [ネームサーバー]に移動します。[追加] をクリックします。

    DNS ネームサーバーの追加

  2. 次のパラメーターの値を入力します。
    • IP アドレス-外部ネームサーバの IP アドレス。Local パラメータが設定されている場合は、ローカル DNS サーバ (LDNS) の IP アドレス。
    • Protocol:ネームサーバーが使用するプロトコル。UDP_TCP は、ネームサーバーがアプライアンスに構成されている DNS 仮想サーバーである場合は無効です。

    DNS ネームサーバパラメータ

  3. [作成] をクリックします。

ルート証明書を追加してバインドする

Azureキーボールトhttps://<vault_name>.vault.azure.netと Azure Active Directory (AAD) https://login.microsoftonline.com によって提示された証明書のルート証明書をダウンロードし、ADC アプライアンスにロードします。これらの証明書は、Azure Key Vault と AAD によって提示された証明書を検証するために必要です。1 つ以上の証明書を CA証明書グループns_callout_certsにバインドします。

CLI を使用してルート証明書を追加するには

コマンドプロンプトで入力します。

add ssl certkey <certkeyname> -cert <certname>
bind ssl caCertGroup <caCertGroupName> <certkeyName>
<!--NeedCopy-->

例: 次の例では、Azure Key Vault と AAD によって提示されるルート証明書は同じです。

add ssl certKey rootcert -cert RootCyberTrustRoot.crt
bind ssl cacertGroup ns_callout_certs  rootcert
<!--NeedCopy-->

GUI を使用してルート証明書を追加するには

  1. トラフィック管理 > SSL > 証明書 > CA 証明書に移動します

    CA証明書のインストール

  2. 次のパラメーターの値を入力します。
    • 証明書とキーのペア名
    • 証明書ファイル名

    CA 証明書パラメータ

  3. [インストール] をクリックします。

  4. トラフィック管理 > SSL > CA 証明書グループに移動します

  5. ns_callout_certs を選択し、[ バインディングの表示] をクリックします。

    バインディングを表示

  6. [バインド] をクリックします。

  7. 前に作成した CA 証明書を選択し、[ Select] をクリックします。

  8. [ バインド] をクリックし、[ 閉じる] をクリックします。

Azure アプリケーションの構成

Azure アプリケーションエンティティには、Azure Active Directory への認証とアクセストークンの取得に必要な資格情報が含まれています。つまり、Key Vault リソースと API への認証アクセスを取得するには、Azure アプリケーション ID、シークレット (パスワード)、テナント ID を ADC アプライアンスに追加します。
CLI を使用して Azure Application エンティティを構成する場合は、パスワードを入力する必要があります。GUI を使用する場合、Azure アプリケーションエンティティには、Azure Active Directory への認証とアクセストークンの取得に必要な資格情報が含まれます。

CLI を使用して Azure アプリケーションを構成するには

リリース 13.0 ~ 61.x では、アクセストークンがアプリケーションに付与される前にリソースグループのドメインを取得するためのパラメータ VaultResourceがadd azure applicationコマンドに追加されました。ドメイン名は地域によって異なる可能性があるため、このパラメータが追加されます。たとえば、ドメインはvault.azure.netまたはvault.usgov.netです。

コマンドプロンプトで入力します。

add azure application <name> -clientID <string> -clientSecret -tenantID <string> -vaultResource <string> [-tokenEndpoint <URL>]
show azure application
<!--NeedCopy-->

例:

add azure application app10 -clientiD 12345t23aaa5 -clientsecret csHzOoEzmuY= -vaultResource example.vault.azure.net -tenantID 33583ee9ca5b
 Done
> sh azure application app10
1)  Name:  app10             ClientID:  12345t23aaa5
    TokenEndpoint:  "https://login.microsoftonline.com/33583ee9ca5b/"
    TenantID:  33583ee9ca5b  VaultResource:  example.vault.azure.net
 Done

<!--NeedCopy-->

GUI を使用して Azure アプリケーションを構成するには

  1. トラフィック管理 > SSL > Azure > アプリケーションに移動します

    Azure アプリケーションナビゲーション

  2. 詳細ペインで、[Add] をクリックします。

  3. 次のパラメーターの値を入力します。

    • 名前-Citrix ADCアプライアンス上のアプリケーションオブジェクトの名前。
    • クライアント ID — アプリケーションが Azure CLI または Azure ポータル (GUI) を使用して Azure Active Directory に作成されたときに生成されるアプリケーション ID。
    • クライアントシークレット — Azure Active Directory で構成されたアプリケーションのパスワード。パスワードは Azure CLI で指定されるか、Azure ポータル (GUI) で生成されます。
    • テナント ID — アプリケーションが作成されたAzure Active Directory 内のディレクトリの ID。
    • Vault リソース-アクセストークンが付与される Vault リソース。例 vault.azure.net
    • トークンエンドポイント — アクセストークンを取得できる URL。トークンエンドポイントが指定されていない場合、デフォルト値はhttps://login.microsoftonline.com/<tenant id>です。

    Azure アプリケーションパラメーター

Azure キーボールトを構成する

ADC アプライアンスに Azure Key Vault オブジェクトを作成します。

CLI を使用して Azure キーボールトを構成するには

コマンドプロンプトで入力します。

add azure keyVault <name> -azureVaultName <string> -azureApplication
       <string>
show azure keyvault
<!--NeedCopy-->

例:

add azure keyvault kv1 -azureapplication app10 -azurevaultName pctest.vault.azure.net
> sh azure keyVault
1)  Name:  kv1               AzureVaultName:  pctest.vault.azure.net
  AzureApplication:  app10  State:  "Access token obtained"
 Done
<!--NeedCopy-->

次の表に、Azure Key Vault の状態で使用できるさまざまな値と、各状態に関する簡単な説明を示します。

State 説明
Created Key Vault オブジェクトの初期状態。認証は試行されていません。
Could not reach token end point DNS サーバーが構成されていない、発行者証明書が CA 証明書グループにバインドされていない、またはネットワークの問題のいずれかを示します。
Authorization failed アプリケーション認証情報が正しくありません。
Token parse error Azure Active Directory からの応答が期待される形式ではありません。
Access token obtained Azure Active Directory によって正常に認証されました。

GUI を使用して Azure キーボールトを構成するには

  1. トラフィック管理 > SSL > Azure > キーボールトに移動します

    Azure キーボールトのナビゲーション

  2. 次のパラメーターの値を入力します。

    • Name:キーボールトの名前。
    • Azure キーボールト名-Azure CLI または Azure ポータル (GUI) を使用してドメイン名を使用して Azure クラウドで構成されたキーボールトの名前。
    • Azure アプリケーション名-ADC アプライアンスで作成された Azure アプリケーションオブジェクトの名前。この名前の Azure アプリケーションオブジェクトは、Azure Active Directory での認証に使用されます。

    Azure キーボールトのパラメーター

HSM キーの追加

プライベートキーを HSM に保存すると、FIPS 140-2 レベル 2 に準拠できます。

CLI を使用して HSM キーを追加するには

コマンドプロンプトで入力します。

add ssl hsmKey <hsmKeyName> [-hsmType <hsmType>] [-key <string> |
       -serialNum <string>] {-password } [-keystore <string>]
<!--NeedCopy-->

例:

add ssl hsmKey h1 -keystore kv1 -key san15key -hsmType KEYVAULT


> sh ssl hsmKey h1
    HSM Key Name: h1       Type: KEYVAULT
    Key: san15key
    Key store: kv1
    State: “Created”
 Done
<!--NeedCopy-->

次の表に、HSM キーの状態で使用できるさまざまな値と、各状態に関する簡単な説明を示します。

State 説明
作成日時 HSM キーが ADC アプライアンスに追加されます。キー操作はまだ試行されていません。
アクセストークンが使用 キー操作が試行されたときには、アクセストークンを使用できません。
無許可 構成された Azure アプリケーションには、キー操作を実行する権限がありません。
存在しない キーは Azure Key ボールトに存在しません。
到達不能 ネットワーク上の Key Vault ホストにアクセスできません。
マークダウン キーの操作中にしきい値エラーが発生したため、ADC アプライアンスで HSM キーが DOWNとマークされます。
主要なオペレーションが成功しました キー操作について Key Vault から成功レスポンスが届きました。
キー操作に失敗しました キー操作のために Key Vault からエラー応答を受信しました。
キー操作が調整された キー操作のリクエストは、Key Vault によって調整されます。

GUI を使用して HSM キーを追加するには

  1. トラフィック管理] > [SSL] > [HSM]に移動します。

    HSM キーの追加

  2. 次のパラメータの値を入力します。

    • HSM キー名-キーの名前。
    • HSM タイプ-HSM のタイプ。
    • Key store-キーが格納されている HSM を表すキーストアオブジェクトの名前。たとえば、キー Vault オブジェクトや Azure Key Vault 認証オブジェクトの名前などです。KEYVAULTタイプHSMにのみ適用されます。

    HSM キーパラメータ

  3. [追加] をクリックします。

証明書とキーのペアを追加します

前に作成した HSM キーを使用して、証明書とキーのペアを追加します。

CLI を使用して証明書とキーのペアを追加するには

コマンドプロンプトで入力します。

add ssl certKey <certkeyName> (-cert <string> [-password]) -hsmKey <string>]
show ssl certkey
<!--NeedCopy-->

例:

add ssl certKey serverrsa_2048 -cert /nsconfig/ssl/san_certs/san15.pem -hsmKey h1
> sh ssl certkey serverrsa_2048
    Name: serverrsa_2048        Status: Valid,   Days to expiration:9483
    Version: 3
    Serial Number: F5CFF9EF1E246022
    Signature Algorithm: sha256WithRSAEncryption
    Issuer:  C=in,O=citrix,CN=ca
    Validity
        Not Before: Mar 20 05:42:57 2015 GMT
        Not After : Mar 12 05:42:57 2045 GMT
    Certificate Type:   "Server Certificate"
    Subject:  C=in,O=citrix
    Public Key Algorithm: rsaEncryption
    Public Key size: 2048
    Ocsp Response Status: NONE
 Done
<!--NeedCopy-->

GUI を使用して証明書とキーのペアを追加するには

  1. [ トラフィック管理] > [SSL] > [証明書のインストール (HSM)] に移動します。

    証明書とキーのペアを追加する

  2. 次のパラメーターの値を入力します。

    • 証明書とキーのペア名
    • 証明書ファイル名
    • HSM キー

    証明書とキーのペアのパラメータ

  3. [インストール] をクリックします。

証明書とキーのペアを仮想サーバーにバインドする

SSL トランザクションの処理に使用される証明書は、SSL データを受信する仮想サーバーにバインドする必要があります。

CLI を使用して SSL 証明書とキーのペアを仮想サーバーにバインドするには

コマンドプロンプトで入力します。

bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName>
show ssl vserver <vServerName>
<!--NeedCopy-->

例:

bind ssl vserver v1 -certkeyName serverrsa_2048

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
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    HSTS Preload: NO
    SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: serverrsa_2048    Server Certificate



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
 Done
<!--NeedCopy-->

GUI を使用して SSL 証明書とキーのペアを仮想サーバーにバインドするには

  1. [ トラフィック管理] > [負荷分散] > [仮想サーバー ] に移動し、SSL 仮想サーバーを開きます。[証明書] セクション内をクリックします。

    サーバー証明書

  2. 矢印をクリックして、証明書とキーのペアを選択します。

    矢印をクリック

  3. リストから証明書とキーのペアを選択します。

    証明書とキーのペアの選択

  4. 証明書とキーのペアを仮想サーバーにバインドします。

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

制限事項

  • キー操作のための Azure Key Vault への同時呼び出しの数には制限があります。ADCアプライアンスのパフォーマンスは、Key Vaultの制限によって異なります。詳細については、 Microsoft Azure Key Vaultのドキュメントを参照してください
  • EC キーはサポートされていません。
  • EDT プロトコルと DTLS プロトコルはサポートされていません。
  • インテル Coleto SSL チップを搭載した ADC アプライアンスはサポートされていません。
  • クラスタリングおよび管理パーティションはサポートされていません。
  • Azure アプリケーションエンティティ、Azure Key Vault オブジェクト、および HSM 証明書とキーのペアを ADC アプライアンスに追加した後は、更新できません。
  • HSM キーを含む証明書バンドルはサポートされていません。
  • HSM キーと証明書が一致しない場合、エラーは表示されません。証明書とキーのペアを追加する際は、HSM キーと証明書が一致していることを確認します。
  • HSM キーを DTLS 仮想サーバーにバインドすることはできません。
  • HSM キーを使用して作成された証明書とキーのペアを使用して OCSP リクエストに署名することはできません。
  • HSM キーを使用して証明書とキーのペアを作成した場合、証明書とキーのペアを SSL サービスにバインドすることはできません。

よくある質問

Azure Key Vault と統合した場合、秘密キーは ADC アプライアンスのメモリに保存されますか

いいえ。秘密鍵は ADC アプライアンスのメモリには保存されません。SSL トランザクションごとに、アプライアンスは Key Vault にリクエストを送信します。

統合 FIPS 140-2 レベル 2 は準拠していますか

はい。統合ソリューションは FIPS 140-2 レベル 2 のサポートを提供します。

どのキータイプがサポートされていますか

RSA キータイプのみがサポートされています。

どのキーサイズがサポートされていますか

1024 ビット、2048 ビット、および 4096 ビットの RSA キーがサポートされています。

どの暗号がサポートされていますか

ECDHE と SHA256 を使用した TLSv1.3 暗号を含む、ADC アプライアンスでサポートされるすべての暗号がサポートされます。

トランザクションはログに記録されますか

ADC アプライアンスは、Key Vault との各トランザクションをログに記録します。時間、Vault IP アドレス、ポート、接続の成功または失敗、エラーなどの詳細がログに記録されます。 次に、SSL ログ出力の例を示します。

Apr  9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT  0-PPE-0 : default SSLLOG SSL_HANDSHAKE_SUCCESS 896 0 :  Backend SPCBId 30894 - ServerIP 104.211.224.186 - ServerPort 443 - ProtocolVersion TLSv1.2 - CipherSuite "ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Non-Export 256-bit" - Session New - SERVER_AUTHENTICATED -SerialNumber "200005A75B04365827852D630000000005A75B" - SignatureAlgorithm "sha256WithRSAEncryption" - ValidFrom "Mar 17 03:28:42 2019 GMT" - ValidTo "Mar 17 03:28:42 2021 GMT" - HandshakeTime 40 ms
Apr  9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT  0-PPE-0 : default SSLLOG SSL_HANDSHAKE_ISSUERNAME 897 0 :  SPCBId 30894 - IssuerName " C=US,ST=Washington,L=Redmond,O=Microsoft Corporation,OU=Microsoft IT,CN=Microsoft IT TLS CA 2"
Apr  9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT  0-PPE-0 : default SSLLOG SSL_HANDSHAKE_SUBJECTNAME 898 0 :  SPCBId 30894 - SubjectName " CN=vault.azure.net"
<!--NeedCopy-->
Azure Key Vaultのサポート