Citrix ADC

ADC-nCipher 統合の設定

次のフローチャートは、Citrix ADCでnCipher HSMを使用するために必要なタスクを示しています。

フローチャート

前述のフローチャートに示すように、次のタスクを実行します。

  1. HSM 上でリモート設定プッシュを有効にします。
  2. nCipher HSM を使用するように ADC を設定します。
    • HSM に NSIP アドレスを追加します。
    • RFS の ADC へのアクセス許可を設定します。
    • 起動時にHardserverの自動起動を設定します。
    • ADC に HSM を登録します。
    • ADCにRFSの詳細を追加します。
    • ADCをRFSに同期させます。
    • nCipher HSM が ADC に正常に登録されていることを確認します。
  3. (任意)HSM RSA キーを作成します。
  4. Citrix ADCでエンティティを構成します。
    • HSM キーを追加します。
    • HSM キーを使用して証明書とキーのペアを追加します。
    • 仮想サーバーを追加します。
    • サーバーオブジェクトを追加します。
    • サービスを追加します。
    • サービスを仮想サーバーにバインドします。
    • 証明書とキーのペアを仮想サーバにバインドします。
    • 設定を確認します。

nCipher HSM の設定

RFS がプッシュする設定を受け入れるように、nCipher HSM 上の RFS の IP アドレスを指定します。nCipher HSM の nShield Connect 前面パネルを使用して、以下の手順を実行します。

nCipher HSM 上のリモートコンピュータの IP アドレスを指定します

  1. [システム構成] > [設定ファイルオプション] > [自動プッシュを許可] に移動します。
  2. [ON] を選択し、構成を受け入れるコンピュータ (RFS) の IP アドレスを指定します。

HSM でのリモート設定プッシュを有効にする

RFS がプッシュする設定を受け入れるように、nCipher HSM 上の RFS の IP アドレスを指定します。nCipher HSM の nShield Connect 前面パネルを使用して、以下の手順を実行します。

nCipher HSM 上のリモートコンピュータの IP アドレスを指定します

  1. [システム構成] > [設定ファイルオプション] > [自動プッシュを許可]に移動します。
  2. [ON] を選択し、構成を受け入れるコンピュータ (RFS) の IP アドレスを指定します。

nCipher HSM を使用するように ADC を設定する

このドキュメントで使用されているサンプル値:

NSIPアドレス=10.217.2.43

nCipher HSM IP アドレス=10.217.2.112

RFS IPアドレス=10.217.2.6

HSM に NSIP アドレスを追加します

通常は、nShield Connect フロントパネルを使用して、クライアントを HSM に追加します。詳細については、「nShield Connect クイックスタートガイド」を参照してください。

または、RFS を使用して、ADC をクライアントとして HSM に追加します。ADC を追加するには、RFS の HSM 設定に NSIP アドレスを追加し、その設定を HSM にプッシュする必要があります。設定をプッシュする前に、HSM の電子シリアル番号(ESN)を知っておく必要があります。

HSM の ESN を取得するには、RFS で次のコマンドを実行します。

root@ns# /opt/nfast/bin/anonkneti <nCipher HSM IP address>

例:

root@ns# /opt/nfast/bin/anonkneti 10.217.2.112
BD17-C807-58D9 5e30a698f7bab3b2068ca90a9488dc4e6c78d822

ESN番号はBD17-C807-58D9です。

ESN 番号を確認したら、vi などのエディタを使用して RFS の HSM 設定ファイルを編集します。

vi /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config

hs_clientsセクションで、次のエントリを追加します。

# Amount of data in bytes to encrypt with a session key before session key# renegotiation, or 0 for unlimitied. (default=1024\*1024\*8b=8Mb).
#  datalimit=INT
addr=10.217.2.43
clientperm=unpriv
keyhash=0000000000000000000000000000000000000000
esn=
timelimit=86400
datalimit=8388608
-----

注: 1 つ以上のハイフンを区切り文字として含めて、同じセクションに複数のエントリを追加します。

設定を HSM にプッシュするには、RFS で次のコマンドを実行します。

/opt/nfast/bin/cfg-pushnethsm --address=<nCipher HSM IP address> --force /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config

例:

/opt/nfast/bin/cfg-pushnethsm --address=10.217.2.112 --force
                /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config

RFS の ADC のアクセス許可を設定します

RFS で ADC のアクセス許可を設定するには、RFS で次のコマンドを実行します。

/opt/nfast/bin/rfs-setup --force -g --write-noauth <NetScaler IP address>

例:

[root@localhost bin]# /opt/nfast/bin/rfs-setup --force -g --write-noauth 10.217.2.43
Adding read-only remote_file_system entries
Ensuring the directory /opt/nfast/kmdata/local exists
Adding new writable remote_file_system entries
Ensuring the directory /opt/nfast/kmdata/local/sync-store exists
Saving the new config file and configuring the hardserver
Done

ポート 9004 を使用して、ADC が RFS と nCipher HSM の両方に到達できることを確認します。

起動時にハードサーバーの自動起動を設定する

ファイルを作成し、アプライアンスを再起動します。これで、アプライアンスを再起動するたびに、このファイルが見つかると、Hardserverが自動的に起動します。

シェルプロンプトで、次のように入力します。

touch /var/opt/nfast/bin/thales_hsm_is_enrolled

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

reboot

ADC に HSM を登録する

ディレクトリを /var/opt/nfast/bin に変更します。

HSM の詳細を ADC 構成に追加するには、ADC で次のコマンドを実行します。

nethsmenroll --force <Thales_nShield_Connect_ip_address> $(anonkneti <Thales_nShield_Connect_ip_address>)

例:

root@ns# ./nethsmenroll --force 10.217.2.112 $(anonkneti 10.217.2.112)
OK configuring hardserver's nethsm imports

この手順では、/var/opt/nfast/kmdata/config/configファイルの nethsm_imports セクションにある行 # ntoken_esn=ESN の後に次のエントリを追加します。

…
local_module=0
remote_ip=10.217.2.112
remote_port=9004
remote_esn=BD17-C807-58D9
keyhash=5e30a698f7bab3b2068ca90a9488dc4e6c78d822
timelimit=86400
datalimit=8388608
privileged=0
privileged_use_high_port=0
ntoken_esn=

ディレクトリを /var/opt/nfast/bin に変更し、ADC で次のコマンドを実行します。

touch "thales_hsm_is_enrolled"

注: ADCに登録されているHSMを削除するには、次のように入力します。

./nethsmenroll –-remove <NETHSM-IP>

ADCにRFSの詳細を追加する

RFS の詳細を追加するには、ディレクトリを /var/opt/nfast/bin/ に変更し、次のコマンドを実行します。

./rfs-sync --no-authenticate --setup <rfs_ip_address>

例:

./rfs-sync --no-authenticate --setup 10.217.2.6
No current RFS synchronization configuration.
Configuration successfully written; new config details:
Using RFS at 10.217.2.6:9004: not authenticating.

この手順では、/var/opt/nfast/kmdata/コンフィグ/コンフィグ/コンフィグファイルの rfs_sync_client セクションの # local_esn=ESN 行の後に次のエントリを追加します。

……
remote_ip=10.217.2.6
remote_port=9004
use_kneti=no
local_esn=

注: ADC に登録されている RFS を削除するには、次のように入力します。

./rfs_sync –remove

ADCをRFSに同期させる

すべてのファイルを同期するには、ディレクトリを /var/opt/nfast/bin に変更し、ADC で次のコマンドを実行します。

./rfs-sync –-update

このコマンドは、RFS の /opt/nfast/kmdata/local ディレクトリからすべてのワールドファイル、モジュールファイル、キーファイルをフェッチし、ADC の /var/opt/nfast/kmdata/local ディレクトリに格納します。ワールドファイル、module_XXXX_XXXX_XXXXXXファイル(XXXX_XXXXXXは登録されているHSMのESN)、および必要なRSAキーと証明書ファイルのみを手動でコピーすることをお勧めします。です。

nCipher HSM が ADC に正常に登録されていることを確認します

ADC を RFS に同期したら、次の操作を行います。

  • ローカルHardserverが稼動中であることを確認します。 (nCipher サーバが実行中)。
  • 構成された HSM の状態を取得し、n_modules(モジュール数)フィールドと km 情報フィールドの値がゼロ以外であることを確認します。
  • HSM が正しく登録され、ADC が使用できること(0x2 Usable 状態)を確認します。
  • を使用したロードテストは適切にsigtest 実行されます。

ディレクトリを /var/opt/nfast/bin に変更し、シェルプロンプトで次のコマンドを実行します。

root@ns# ./chkserv root@ns# ./nfkminfo root@ns# ./sigtest

例については、「付録」を参照してください。

HSM RSA キーの作成

HSM キーとしてサポートされているのは RSA キーのみです。

注: キーがRFS上の/opt/nfast/kmdata/local フォルダにすでに存在する場合は、この手順をスキップします。

RSA キー、自己署名証明書、および証明書署名要求 (CSR) を作成します。CSR を認証局に送信して、サーバ証明書を取得します。

以下の例では、次のファイルが作成されます。

  • RSA キーを埋め込む:key_embed_2ed5428aaeae1e159bdbd63f25292c7113ec2c78
  • 自己署名証明書:example_selfcert
  • 証明書署名リクエスト:example_req

注:generatekeyコマンドは、厳密なFIPS 140-2 Level 3 Security Worldでサポートされています。キーや OCS の作成など、多くの操作を制御するには、管理者カードセット (ACS) またはオペレータカードセット (OCS) が必要です。このgeneratekeyコマンドを実行すると、ACS カードまたは OCS カードを挿入するように求められます。厳格なFIPS 140-2 Level 3 Security Worldの詳細については、nShield Connect ユーザーガイドを参照してください。

次の例では、Level-2 Security Worldを使用します。この例では、コマンドは太字です。

例:

[root@localhost bin]# ./generatekey embed
size: Key size? (bits, minimum 1024) [1024] > 2048
OPTIONAL: pubexp: Public exponent for RSA key (hex)? []
>
embedsavefile: Filename to write key to? []
> example
plainname: Key name? [] > example
x509country: Country code? [] > US
x509province: State or province? [] > CA
x509locality: City or locality? [] > Santa Clara
x509org: Organisation? [] > Citrix
x509orgunit: Organisation unit? [] > NS
x509dnscommon: Domain name? [] > www.citrix.com
x509email: Email address? [] > example@citrix.com
nvram: Blob in NVRAM (needs ACS)? (yes/no) [no] >
digest: Digest to sign cert req with? (md5, sha1, sha256, sha384, sha512)
  [default sha1] > sha512
key generation parameters:
 operation      Operation to perform               generate
 application    Application                        embed
 verify         Verify security of key             yes
 type           Key type                           RSA
 size           Key size                           2048
 pubexp         Public exponent for RSA key (hex)
 embedsavefile  Filename to write key to           example
 plainname      Key name                           example
 x509country    Country code                       US
 x509province   State or province                  CA
 x509locality   City or locality                   Santa Clara
 x509org        Organisation                       Citrix
 x509orgunit    Organisation unit                  NS
 x509dnscommon  Domain name                        www.citrix.com
 x509email      Email address                      example@citrix.com
 nvram          Blob in NVRAM (needs ACS)          no
 digest         Digest to sign cert req with       sha512
Key successfully generated.
Path to key: /opt/nfast/kmdata/local/key_embed_2ed5428aaeae1e159bdbd63f25292c7113ec2c78
You have new mail in /var/spool/mail/root

結果:

CSR (例_req)、自己署名証明書 (例_selfcert)、および埋め込み形式のアプリケーションキートークンファイル (/opt/nfast/kmdata/ローカル/キー埋め込み_2ed5428ae159bdbd63f25292c7113ec2c78) を作成しました。

ADC は単純な形式のキーのみをサポートしているため、埋め込みキーを単純なキーに変換する必要があります。

埋め込みキーを単純なキーに変換するには、RFS で次のコマンドを実行します。

[root@localhost bin]# ./generatekey -r simple
from-application: Source application? (embed, simple) [embed] > embed
from-ident: Source key identifier? (c6410ca00af7e394157518cb53b2db46ff18ce29,
                                    2ed5428aaeae1e159bdbd63f25292c7113ec2c78)
  [default c6410ca00af7e394157518cb53b2db46ff18ce29]
> 2ed5428aaeae1e159bdbd63f25292c7113ec2c78
ident: Key identifier? [] > examplersa2048key
plainname: Key name? [] > examplersa2048key
key generation parameters:
 operation         Operation to perform    retarget
 application       Application             simple
 verify            Verify security of key  yes
 from-application  Source application      embed
 from-ident        Source key identifier   2ed5428aaeae1e159bdbd63f25292c7113ec2c78
 ident             Key identifier          examplersa2048key
 plainname         Key name                examplersa2048key
Key successfully retargetted.
Path to key: /opt/nfast/kmdata/local/key_simple_examplersa2048key

重要:

ソースキー識別子の入力を求められたら、埋め込みキーとして「 2ed5428aae1e159bd63f25292c7113ec2c78 」と入力します。

結果:

プレフィックス key_simple を持つキー (たとえば、key_simple_examplersa2048key) が作成されます。

注: examplersa2048keyはキー識別子(ID)であり、ADCではHSMキー名と呼ばれます。キー識別子は一意です。すべての単純なファイルには、プレフィックスkey_simple があります。

ADC上のエンティティの構成

ADC がトラフィックを処理する前に、次のことを行う必要があります。

  1. 機能を有効にします。
  2. サブネット IP(SNIP)アドレスを追加します。
  3. ADCにHSMキーを追加します。
  4. HSM キーを使用して証明書とキーのペアを追加します。
  5. 仮想サーバーを追加します。
  6. サーバーオブジェクトを追加します。
  7. サービスを追加します。
  8. サービスを仮想サーバーにバインドします。
  9. 証明書とキーのペアを仮想サーバにバインドします。
  10. 設定を確認します。

ADCの機能を有効にする

機能を有効にする前に、ADC にライセンスが存在している必要があります。

CLI を使用した機能の有効化

コマンドプロンプトで、次のコマンドを実行します。

enable feature lb
enable feature ssl

GUI を使用した機能の有効化

[システム] > [設定] に移動し、[モードと機能] グループで [基本機能の構成] を選択し、[SSL オフロード] を選択します。

サブネット IP アドレスの追加

サブネット IP アドレスの詳細については、「サブネット IP アドレスの設定」を参照してください。

CLI を使用して SNIP アドレスを追加し、設定を確認します

コマンドプロンプトで、次のコマンドを実行します。

add ns ip <IPAddress> <netmask> -type SNIP
show ns ip

例:

add ns ip 192.168.17.253 255.255.248.0 -type SNIP
Done
show ns ip
        Ipaddress        Traffic Domain  Type             Mode     Arp      Icmp     Vserver  State
        ---------        --------------  ----             ----     ---      ----     -------  ------
1)      192.168.17.251   0               NetScaler IP     Active   Enabled  Enabled  NA       Enabled
2)      192.168.17.252   0               VIP              Active   Enabled  Enabled  Enabled  Enabled
3)      192.168.17.253   0               SNIP              Active   Enabled  Enabled  NA       Enabled
 Done

GUIを使用してSNIPアドレスを追加し、構成を確認します

[システム] > [ネットワーク] > [IP]に移動し、IP アドレスを追加し、[IP タイプ] を [サブネット IP] として選択します。

HSM キーと証明書を ADC にコピーします

安全なファイル転送ユーティリティを使用して、キー (key_simple_examplersa2048key) を/var/opt/nfast/kmdata/local フォルダーに、証明書 (example_selfcert) を ADC の/nsconfig/ssl フォルダーに安全にコピーします。

ADCにキーを追加します

すべてのキーは、キー単純な接頭辞を持っています。ADCにキーを追加する場合は、HSMキー名としてidentを使用します。たとえば、追加したキーが key_simple_XXXX の場合、HSM キー名は XXXX になります。

重要:

  • HSM キー名は、埋め込みキーを単純なキー形式に変換したときに指定した ident と同じである必要があります。
  • キーは、ADC の/var/opt/nfast/kmdata/local/ ディレクトリに存在する必要があります。

CLI を使用した HSM キーの追加

シェルプロンプトで、次のコマンドを実行します。

add ssl hsmKey <hsmKeyName> -key <string>

例:

add ssl hsmKey examplersa2048key –key key_simple_examplersa2048key
Done

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

[トラフィック管理] > [SSL] > [HSM] に移動し、HSM キーを追加します。

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

証明書とキーのペアの詳細については、 証明書とキーのペアの追加または更新を参照してください。

CLI を使用した証明書とキーのペアの追加

コマンドプロンプトで、次のコマンドを実行します。

add ssl certKey <certkeyName> -cert <string> -hsmKey <string>

例:

add ssl certKey key22 -cert example_selfcert -hsmKey examplersa2048key
Done

GUI を使用した証明書とキーのペアの追加

[**トラフィック管理] > [SSL] > [証明書]**に移動し、証明書とキーのペアを追加します。

仮想サーバーの追加

仮想サーバの詳細については、 SSL 仮想サーバーの構成を参照してください。

CLI を使用した SSL ベースの仮想サーバーの構成

コマンドプロンプトで、次のコマンドを実行します。

add lb vserver <name> <serviceType> <IPAddress> <port>

例:

add lb vserver v1 SSL 192.168.17.252 443

GUI を使用して SSL ベースの仮想サーバーを構成する

[トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、仮想サーバーを作成し、プロトコルを SSL として指定します。

サーバーオブジェクトの追加

ADC にサーバオブジェクトを追加する前に、バックエンドサーバが作成されていることを確認してください。次の例では、Linux システムで組み込みの Python HTTP サーバーモジュールを使用しています。

例:

%python –m SimpleHTTPServer 80

CLI を使用したサーバーオブジェクトの追加

コマンドプロンプトで、次のコマンドを実行します。

add server <name> <IPAddress>

例:

add server s1 192.168.17.246

GUI を使用したサーバーオブジェクトの追加

[トラフィック管理] > [負荷分散] > [サーバー]に移動し、サーバーを追加します。

サービスを追加する

詳しくは、「 サービスの構成中」を参照してください。

CLI を使用したサービスの設定

コマンドプロンプトで、次のコマンドを実行します。

add service <name> <serverName> <serviceType> <port>

例:

add service sr1 s1 HTTP 80

GUI を使用したサービスの構成

[トラフィック管理] > [負荷分散] > [サービス] に移動し、サービスを作成します。

サービスを仮想サーバーにバインドする

詳しくは、「 SSL 仮想サーバーへのサービスのバインド」を参照してください。

CLI を使用してサービスを仮想サーバーにバインドする

コマンドプロンプトで、次のコマンドを実行します。

bind lb vserver <name> <serviceName>

例:

bind lb vserver v1 sr1

GUI を使用してサービスを仮想サーバーにバインドする

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動します。
  2. 仮想サーバを開き、[Services] ペインをクリックして、サービスを仮想サーバにバインドします。

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

詳しくは、「 証明書とキーのペアを SSL 仮想サーバーにバインドする」を参照してください。

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

コマンドプロンプトで、次のコマンドを実行します。

bind ssl vserver <vServerName> -certkeyName <string>

例:

bind ssl vserver v1 -certkeyName key22
Warning: Current certificate replaces the previous binding

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

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動します。
  2. SSL 仮想サーバーを開き、[詳細設定]で [SSL 証明書] をクリックします。
  3. サーバー証明書を仮想サーバーにバインドします。

構成を確認します

CLI を使用して設定を表示するには、次の手順を実行します。

コマンドプロンプトで、次のコマンドを実行します。

show lb vserver <name>
show ssl vserver <vServerName>

例:

show lb vserver v1
        v1 (192.168.17.252:443) - SSL   Type: ADDRESS
        State: UP
        Last state change was at Wed Oct 29 03:11:11 2014
        Time since last state change: 0 days, 00:01:25.220
        Effective State: UP
        Client Idle Timeout: 180 sec
        Down state flush: ENABLED
        Disable Primary Vserver On Down : DISABLED
        Appflow logging: ENABLED
        No. of Bound Services :  1 (Total)       1 (Active)
        Configured Method: LEASTCONNECTION
        Current Method: Round Robin, Reason: Bound service's state changed to UP
        Mode: IP
        Persistence: NONE
        Vserver IP and Port insertion: OFF
        Push: DISABLED  Push VServer:
        Push Multi Clients: NO
        Push Label Rule: none
        L2Conn: OFF
        Skip Persistency: None
        IcmpResponse: PASSIVE
        RHIstate: PASSIVE
        New Service Startup Request Rate: 0 PER_SECOND, Increment Interval: 0
        Mac mode Retain Vlan: DISABLED
        DBS_LB: DISABLED
        Process Local: DISABLED
        Traffic Domain: 0

1) sr1 (192.168.17.246: 80) - HTTP State: UP    Weight: 1
Done
sh ssl vserver v1
        Advanced SSL configuration for VServer v1:
        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: DISABLED
        SSL Redirect: DISABLED
        Non FIPS Ciphers: DISABLED
        SNI: DISABLED
        SSLv2: DISABLED  SSLv3: DISABLED  TLSv1.0: ENABLED  TLSv1.1: DISABLED  TLSv1.2: DISABLED
        Push Encryption Trigger: Always
        Send Close-Notify: YES

        ECC Curve: P_256, P_384, P_224, P_521

1)      CertKey Name: key22       Server Certificate

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

GUI を使用して設定を表示するには、次の手順を実行します。

[トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、SSL 仮想サーバーをダブルクリックして開き、設定を表示します。

ADC-nCipher 統合の設定