ADC-nCipher統合を構成する
次のフローチャートは、NetScalerでnCipher HSMを使用するために実行する必要のあるタスクを示しています。
上記のフローチャートに示すように、次のタスクを実行します。
- HSM のリモート設定プッシュを有効にします。
- nCipher HSM を使用するように ADC を設定します。
- HSM に NSIP アドレスを追加します。
- RFS で ADC のアクセス権限を設定します。
- ブート時の
Hardserver
の自動起動を設定します。 - HSM を ADC に登録します。
- ADC に RFS の詳細を追加します。
- ADCをRFSに同期させます。
- nCipher HSM が ADC に正常に登録されていることを確認します。
- (任意)HSM RSA キーを作成します。
- NetScaler でエンティティを設定します。
- HSM キーを追加します。
- HSM キーを使用して証明書とキーのペアを追加します。
- 仮想サーバーを追加します。
- サーバーオブジェクトを追加します。
- サービスを追加します。
- サービスを仮想サーバーにバインドします。
- 証明書とキーのペアを仮想サーバーにバインドします。
- 設定を確認します。
nCipher HSM の設定
nCipher HSM 上の RFS の IP アドレスを指定して、RFS がプッシュする設定を受け入れるようにします。nCipher HSM の nShield Connect フロントパネルを使用して、以下の手順を実行します。
nCipher HSM 上のリモートコンピューターの IP アドレスを指定します
- [ システム構成 ] > [ 設定ファイルオプション ] > [ 自動プッシュを許可] に移動します。
- [ON] を選択し、設定を受け入れるコンピュータ (RFS) の IP アドレスを指定します。
HSM でのリモート設定プッシュを有効にする
nCipher HSM 上の RFS の IP アドレスを指定して、RFS がプッシュする設定を受け入れるようにします。nCipher HSM の nShield Connect フロントパネルを使用して、以下の手順を実行します。
nCipher HSM 上のリモートコンピューターの IP アドレスを指定します
- [ システム構成] > [設定ファイルオプション] > [自動プッシュを許可] に移動します。
- [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>
<!--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-->
ADC がポート 9004 を使用して RFS と nCipher HSM の両方にアクセスできることを確認します。
起動時に hardserver
の自動開始を構成する
ファイルを作成し、アプライアンスを再起動します。これで、アプライアンスを再起動するたびに、このファイルが見つかると、Hardserver
が自動的に起動します。
シェルプロンプトで、次のように入力します。
touch /var/opt/nfast/bin/thales_hsm_is_enrolled
<!--NeedCopy-->
コマンドプロンプトで入力します。
reboot
<!--NeedCopy-->
HSM を ADC に登録します
ディレクトリを /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/config/config ファイルの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_XXXXファイル(XXXX_XXXX_XXXXは登録されている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 レベル 3 セキュリティワールドでサポートされています。キーや OCS の作成を含む多くの操作を制御するには、管理者カードセット (ACS) またはオペレータカードセット (OCS) が必要です。 generatekey
コマンドを実行すると、ACS カードまたは OCS カードを挿入するように求められます。厳密な FIPS 140-2 レベル 3 セキュリティワールドの詳細については、nShield Connect ユーザーガイドを参照してください。
次の例では、レベル 2 セキュリティワールドを使用しています。この例では、コマンドは太字で示されています。
例:
[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 (example_req)、自己署名証明書 (example_selfcert)、および埋め込み形式 (/opt/nfast/kmdata/local/key_embed_2ed5428aaeae1e159bdbd63f25292c7113ec2c78) のアプリケーションキートークンファイルを作成しました。
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-->
重要:
ソースキー識別子の入力を求められたら、埋め込みキーとして 2ed5428aaeae1e159bdbd63f25292c7113ec2c78 と入力します。
結果:
key_simple というプレフィックスが付いたキー (たとえば、key_simple_examplersa2048key) が作成されます。
注: examplersa2048key はキー識別子 (ID) で、ADC では HSM キー名と呼ばれます。キー識別子はユニークです。すべての単純なファイルには、プレフィックスkey_simple があります。
ADC のエンティティの設定
ADC がトラフィックを処理する前に、次のことを行う必要があります。
- 機能を有効にする。
- サブネット IP (SNIP) アドレスを追加します。
- HSM キーを ADC に追加します。
- HSM キーを使用して証明書とキーのペアを追加します。
- 仮想サーバーを追加します。
- サーバーオブジェクトを追加します。
- サービスを追加します。
- サービスを仮想サーバーにバインドします。
- 証明書とキーのペアを仮想サーバーにバインドします。
- 設定を確認します。
ADC の機能を有効にする
機能を有効にする前に、ADC にライセンスが存在している必要があります。
CLI を使用して機能を有効にする
コマンドプロンプトで、次のコマンドを実行します。
enable feature lb
enable feature ssl
<!--NeedCopy-->
GUI を使用して機能を有効にする
[ システム ] > [ 設定] に移動し、[ モードと機能 ] グループで [ 基本機能の設定] を選択し、[ SSL オフロード] を選択します。
サブネット 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-->
SNIP アドレスを追加し、GUI を使用して構成を確認します
[ システム] > [ネットワーク] > [IP] に移動し、IP アドレスを追加して、 IP タイプを [サブネット IP] として選択します。
HSM キーと証明書を ADC にコピーします
安全なファイル転送ユーティリティを使用して、キー (key_simple_examplersa2048key) を/var/opt/nfast/kmdata/local
フォルダに安全にコピーし、証明書 (example_selfcert) を ADC上の/nsconfig/ssl
フォルダに安全にコピーします。
ADCにキーを追加してください
すべてのキーには key-simple というプレフィックスが付いています。ADC にキーを追加するときは、ID を HSM キー名として使用します。たとえば、追加したキーが key_Simple_XXXX の場合、HSM キー名は XXXX です。
重要:
- HSM キー名は、埋め込みキーをシンプルキー形式に変換したときに指定した ID と同じでなければなりません。
- キーは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 を使用して証明書とキーのペアを追加する
[ トラフィック管理] > [SSL] > [証明書] に移動し、証明書とキーのペアを追加します。
仮想サーバーを追加する
仮想サーバーの詳細については、「 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 を使用してサーバーオブジェクトを追加する
[ トラフィック管理] > [負荷分散] > [サーバー] に移動し、サーバーを追加します。
サービスを追加
詳細については、「 サービスの設定」を参照してください。
CLI を使用したサービスの設定
コマンドプロンプトで、次のコマンドを実行します。
add service <name> <serverName> <serviceType> <port>
<!--NeedCopy-->
例:
add service sr1 s1 HTTP 80
<!--NeedCopy-->
GUI を使用してサービスを構成する
[ トラフィック管理 ] > [ 負荷分散 ] > [ サービス] に移動し、サービスを作成します。
サービスを仮想サーバーにバインドする
詳細については、「 SSL 仮想サーバーへのサービスのバインド」を参照してください。
CLIを使用してサービスを仮想サーバーにバインドします
コマンドプロンプトで、次のコマンドを実行します。
bind lb vserver <name> <serviceName>
<!--NeedCopy-->
例:
bind lb vserver v1 sr1
<!--NeedCopy-->
GUIを使用してサービスを仮想サーバーにバインドする
- [ トラフィック管理 ] > [ 負荷分散 ] > [ 仮想サーバー] に移動します。
- 仮想サーバーを開き、サービスペインをクリックして、サービスを仮想サーバーにバインドします。
証明書とキーのペアを 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 を使用して証明書とキーのペアを仮想サーバーにバインドする
- [ トラフィック管理 ] > [ 負荷分散 ] > [ 仮想サーバー] に移動します。
- SSL 仮想サーバーを開き、[ 詳細設定] で [ SSL 証明書] をクリックします。
- サーバー証明書を仮想サーバーにバインドします。
構成を確認する
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 を使用して構成を表示するには:
[ トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、SSL 仮想サーバーをダブルクリックして開き、構成を表示します。