Citrix ADC

Azure Key Vaultのサポート

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

ADC と Azure Key Vault プレミアムの価格レベルを使用すると、HSM でバックアップされたキーが提供され、FIPS 140-2 レベル 2 のコンプライアンスが実現されます。

Azure Key Vaultは、Microsoftの標準製品です。Azure Key Vaultの詳細については、Microsoft Azure のドキュメントを参照してください。

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

アーキテクチャの概要

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

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

アクセストークンの取得

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

Key Vaultハンドシェイク

ECDHEハンドシェイクでは、Citrix ADCアプライアンスによって送信されたサーバーキー交換(SKE)メッセージは、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 ポータルで構成を完了します。

ADC Azure Key Vaultの統合を構成する

まず、Azure ポータルで構成を実行し、続いて 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 Key Vaultエンティティを作成します。
  5. HSM キーを作成します。
  6. 証明書とキーのペアを作成します。
  7. 証明書とキーのペアを仮想サーバにバインドします。

DNS サーバーを構成する

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

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

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

add dns nameserver <IP address>

例:

add dns nameserver 192.0.2.150

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

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

    DNS ネームサーバーの追加

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

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

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

ルート証明書の追加とバインド

Azure Key Vaulthttps://<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>

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

add ssl certKey rootcert -cert RootCyberTrustRoot.crt
bind ssl cacertGroup ns_callout_certs  rootcert

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

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

    CA 証明書のインストール

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

    CA 証明書パラメータ

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

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

  5. ns_callout_certs 」を選択し、「 バインドの表示 」をクリックします。

    バインディングを表示

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

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

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

Azure アプリケーションを構成する

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

例:

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

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

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

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

  2. 詳細ウィンドウで、[追加] をクリックします。

  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 Key Vaultを構成する

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

CLI を使用してAzure Key Vaultを構成するには

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

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

例:

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

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

状態 説明
作成済み Key Vaultオブジェクトの初期状態。認証が試行されていません。
トークンのエンドポイントに到達できませんでした DNS サーバーが構成されていない、発行元の証明書が CA 証明書グループにバインドされていない、またはネットワークの問題のいずれかを示します。
認証に失敗しました アプリケーションの認証情報が正しくありません。
トークン解析エラー Azure Active Directory からの応答が予期された形式ではありません。
アクセストークンを取得しました Azure Active Directory による認証に成功しました。

GUI を使用して Azure Key Vaultを構成するには

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

    Azure Key Vaultナビゲーション

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

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

    Azure Key Vaultパラメータ

HSM キーの追加

プライベートキーを HSM に保管すると、FIPS 140-2 レベル 2 準拠が可能になります。

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

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

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

例:

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

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

状態 説明
作成済み HSM キーは ADC アプライアンスに追加されます。キー操作はまだ試行されていません。
アクセストークンを使用できません キー操作を試みたときはアクセストークンを使用できません。
未承認 構成された Azure アプリケーションに、キー操作を実行するためのアクセス許可がありません。
存在しません キーがAzure Key Vaultに存在しません。
到達不可 Key Vault ホストがネットワーク上で到達できません。
マークダウン HSM キーは、キー操作中のしきい値エラーにより、ADC アプライアンスで DOWN とマークされます。
キー操作が成功しました キー操作のためにKey Vaultから成功応答を受信しました。
キー操作が失敗しました キー・オペレーションのKey Vaultからエラー応答を受信しました。
キー操作が抑制されています キー操作要求は、Key Vault によって調整されます。

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

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

    HSM キーの追加

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

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

    HSM キーパラメータ

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

証明書とキーのペアの追加

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

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

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

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

例:

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

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

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

    証明書とキーのペアの追加

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

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

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

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

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

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

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

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

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

例:

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

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

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

    サーバー証明書

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

    クリックの矢印

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

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

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

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

制限事項

  • キー操作に対する Azure Key Vault への同時呼び出しの数には制限があります。ADCアプライアンスのパフォーマンスは、Key Vaultの制限によって異なります。詳しくは、「Microsoft Azure Key Vaultドキュメント」を参照してください。
  • EC キーはサポートされていません。
  • EDT プロトコルと DTLS プロトコルはサポートされていません。
  • インテル Coleto SSL チップを搭載した ADC アプライアンスはサポートされていません。
  • クラスタリングおよび管理パーティションはサポートされていません。
  • ADC アプライアンスにそれらを追加した後、Azure アプリケーションエンティティ、Azure Key Vault オブジェクト、および HSM 証明書とキーのペアを更新することはできません。

よくある質問

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で行われる各トランザクションを記録します。時間、ヴォールト 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"

Azure Key Vaultのサポート