ADC

ADC-nCipher統合を構成します

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

フローチャート

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

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

nCipherHSMを構成します

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

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

  1. System Configuration > Config file options > Allow auto pushに移動します。
  2. [ON] を選択し、設定を受け入れるコンピュータ (RFS) の IP アドレスを指定します。

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

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

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

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

nCipherHSMを使用するようにADCを構成します

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

NSIPアドレス=10.217.2.43

Thales 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>
<!--NeedCopy-->

例:

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

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

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

vi /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config
<!--NeedCopy-->

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
-----
<!--NeedCopy-->

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

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

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

例:

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

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

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

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

例:

[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
<!--NeedCopy-->

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

起動時に hardserver の自動開始を構成する

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

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

touch /var/opt/nfast/bin/thales_hsm_is_enrolled
<!--NeedCopy-->

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

reboot
<!--NeedCopy-->

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
<!--NeedCopy-->

この手順では、/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=
<!--NeedCopy-->

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

touch "thales_hsm_is_enrolled"
<!--NeedCopy-->

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

./nethsmenroll –-remove <NETHSM-IP>
<!--NeedCopy-->

ADCにRFSの詳細を追加する

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

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

例:

./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.
<!--NeedCopy-->

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

……
remote_ip=10.217.2.6
remote_port=9004
use_kneti=no
local_esn=
<!--NeedCopy-->

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

./rfs_sync –remove
<!--NeedCopy-->

ADCをRFSに同期させる

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

./rfs-sync –-update
<!--NeedCopy-->

このコマンドは、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
<!--NeedCopy-->

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

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
<!--NeedCopy-->

結果:

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
<!--NeedCopy-->

重要:

ソースキー識別子の入力を求められたら、埋め込みキーとして「 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
<!--NeedCopy-->

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

System > Settingsに移動してModes and FeaturesグループでConfigure basic featuresを選択し、SSL Offloadingを選択します。

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

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

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

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

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

例:

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
<!--NeedCopy-->

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>
<!--NeedCopy-->

例:

add ssl hsmKey examplersa2048key –key key_simple_examplersa2048key
Done
<!--NeedCopy-->

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

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

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

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

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

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

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

例:

add ssl certKey key22 -cert example_selfcert -hsmKey examplersa2048key
Done
<!--NeedCopy-->

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

Traffic Management > SSL > Certificates証明書キーペアを追加します。

仮想サーバーの追加

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

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

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

add lb vserver <name> <serviceType> <IPAddress> <port>
<!--NeedCopy-->

例:

add lb vserver v1 SSL 192.168.17.252 443
<!--NeedCopy-->

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

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

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

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

例:

%python –m SimpleHTTPServer 80
<!--NeedCopy-->

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

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

add server <name> <IPAddress>
<!--NeedCopy-->

例:

add server s1 192.168.17.246
<!--NeedCopy-->

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

Traffic Management > Load Balancing > Serversに移動してサーバーを追加します。

サービスを追加する

詳細については、「 サービスの設定」を参照してください。

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

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

add service <name> <serverName> <serviceType> <port>
<!--NeedCopy-->

例:

add service sr1 s1 HTTP 80
<!--NeedCopy-->

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

Traffic Management > Load Balancing > Servicesに移動してサービスを作成します。

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

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

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

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

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

例:

bind lb vserver v1 sr1
<!--NeedCopy-->

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

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

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

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

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

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

bind ssl vserver <vServerName> -certkeyName <string>
<!--NeedCopy-->

例:

bind ssl vserver v1 -certkeyName key22
Warning: Current certificate replaces the previous binding
<!--NeedCopy-->

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

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

構成を確認します

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

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

show lb vserver <name>
show ssl vserver <vServerName>
<!--NeedCopy-->

例:

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
<!--NeedCopy-->
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
<!--NeedCopy-->

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

Traffic Management > Load Balancing > Virtual Serversに移動してSSL仮想サーバーをダブルクリックして開いて、構成を表示します。

ADC-nCipher統合を構成します