6.6. HSM の設定
ハードウェアセキュリティーモジュール (HSM) を使用するには、FIPS (Federal Information Processing Standard) 140-2 で検証された HSM が必要です。Red Hat Certificate System は、nShield Connect XC ハードウェアセキュリティーモジュール (HSM) と Thales Luna HSM をデフォルトでサポートしています (Luna の制限の詳細は 「サポート対象のハードウェアセキュリティーモジュール」 を参照してください)。Certificate System がサポートする HSM は、PKCS #11 ライブラリーモジュールが指定されているインストールパスにある場合、インストールの事前設定段階で modutil
コマンドを使用して pkcs11.txt
データベースに自動的に追加されます。
- rhcs10.example.com を HSM クライアントマシンとして設定します。
特定の HSM ブランド/モデル/リリースは、HSM ベンダーから提供された指示に従ってください。
この例では、nShield Connect XC ユニットが最新のソフトウェアとファームウェアでインストールされ、FIPS 140-2 (レベル 3) に準拠するように設定されています。この記事の執筆時点では、RFS ソフトウェアは SecWorld_Lin64-12.71.0、ファームウェアは nShield ファームウェア 12.72.1 (FIPS 認定)、イメージ 12.80.5 です。
6.6.1. HSM 上の FIPS モード
ハードウェアセキュリティーモジュール (HSM) を使用するには、FIPS (Federal Information Processing Standard) 140-2 で検証された HSM が必要です。特定のデプロイメントでは、FIPS モードを使用するように HSM を設定する必要があります。HSM で FIPS モードを有効にする場合は、HSM ベンダーのドキュメントを参照してください。
- nShield Connect XC HSM
-
nShield Connect XC HSM では、FIPS モードは Security World 生成時にのみ有効にでき、その後は変更できません。Security World を生成するにはさまざまな方法がありますが、常に
new-world
コマンドを使用することが推奨されます。
FIPS 準拠の Security World を生成する方法は、HSM ベンダーのドキュメントを参照してください。 - Luna HSM
-
同様に、Luna HSM で FIPS モードを有効にするには、初期設定時に行う必要があります。これは、このポリシーを変更すると、セキュリティー対策として HSM がゼロになるためです。
詳細は、Luna HSM ベンダーのドキュメントを参照してください。Luna の制限の詳細は、「サポート対象のハードウェアセキュリティーモジュール」 を参照してください。
以下の手順は、nShield Connect XC および Luna HSM で FIPS モードが有効になっているかどうかを確認するために役立ちます。その他の HSM は、HSM 製造元のドキュメントを参照してください。
nShield Connect XC HSM
nShield HSM で FIPS モードが有効になっているかどうかを確認するには、次のように入力します。
/opt/nfast/bin/nfkminfo
# /opt/nfast/bin/nfkminfo
古いバージョンのソフトウェアでは、StrictFIPS140
が state フラグに一覧表示されると、FIPS モードが有効になります。ただし、新しいバージョンでは、新しい mode
行を確認して fips1402level3
を検索することが推奨されます。すべてのケースで、nfkminfo
出力には hkfips
キーも存在しているはずです。
Luna HSM
FIPS モードが Luna HSM で有効になっているかどうかを確認するには、次を実行します。
-
lunash
管理コンソールを開きます。 hsm show
コマンドを使用して、出力にThe HSM is in FIPS 140-2 approved operation mode.
の文字が含まれていることを確認します。lunash:> hsm show ... FIPS 140-2 Operation: ===================== The HSM is in FIPS 140-2 approved operation mode. ...
lunash:> hsm show ... FIPS 140-2 Operation: ===================== The HSM is in FIPS 140-2 approved operation mode. ...
Copy to Clipboard Copied!
完全な手順は、HSM ベンダーのドキュメントを参照してください。
6.6.2. HSM 用の SELinux の設定
特定の HSM では、Certificate System をインストールする前に、手動で SELinux 設定を更新する必要があります。以下では、nShield と Luna HSM を説明しています。その他の HSM は、HSM 製造元のドキュメントを参照してください。
- nShield Connect XC
HSM をインストールした後、Certificate System をインストールする前に以下を実行します。
/opt/nfast/
ディレクトリーのファイルのコンテキストをリセットします。restorecon -R /opt/nfast/
# restorecon -R /opt/nfast/
Copy to Clipboard Copied! nfast
ソフトウェアを再起動します。/opt/nfast/sbin/init.d-ncipher restart
# /opt/nfast/sbin/init.d-ncipher restart
Copy to Clipboard Copied!
- Thales Luna HSM
- Certificate System をインストールする前に、SELinux 関連のアクションは必要ありません。
サポートされている HSM とその制限の詳細は、「サポート対象のハードウェアセキュリティーモジュール」 を参照してください。
6.6.3. HSM を使用した Certificate System のインストールの準備
7章Red Hat Certificate System のインストールと設定 では、HSM を使用して Certificate System をインストールする場合は、pkispawn
ユーティリティーに渡す設定ファイルで以下のパラメーターを使用します。
... [DEFAULT] ########################## # Provide HSM parameters # ########################## pki_hsm_enable=True pki_hsm_libfile=hsm_libfile pki_hsm_modulename=hsm_modulename pki_token_name=hsm_token_name pki_token_password=pki_token_password ######################################## # Provide PKI-specific HSM token names # ######################################## pki_audit_signing_token=hsm_token_name pki_ssl_server_token=hsm_token_name pki_subsystem_token=hsm_token_name ...
...
[DEFAULT]
##########################
# Provide HSM parameters #
##########################
pki_hsm_enable=True
pki_hsm_libfile=hsm_libfile
pki_hsm_modulename=hsm_modulename
pki_token_name=hsm_token_name
pki_token_password=pki_token_password
########################################
# Provide PKI-specific HSM token names #
########################################
pki_audit_signing_token=hsm_token_name
pki_ssl_server_token=hsm_token_name
pki_subsystem_token=hsm_token_name
...
-
pki_hsm_libfile
およびpki_token_name
パラメーターの値は、HSM インストールにより異なります。これらの値により、pkispawn
ユーティリティーで HSM をセットアップし、Certificate System が接続できるようになります。 -
pki_token_password
の値は、HSM トークンのパスワードにより異なります。パスワードは、HSM で新しいキーを作成するためのpkispawn
ユーティリティーの読み取りおよび書き込み権限を付与します。 -
pki_hsm_modulename
の値は、後続のpkispawn
操作で HSM を識別するために使用される名前です。文字列は、任意のものとして設定できる識別子です。これにより、pkispawn
および Certificate System は、後の操作で HSM および設定情報を名前で参照できます。
以下のセクションでは、各 HSM の設定を説明します。HSM がリストにない場合は、HSM の製造元のドキュメントを参照してください。
nShield HSM パラメーター
nShield Connect XC の場合は、次のパラメーターを設定します。
pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so pki_hsm_modulename=nfast
pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so
pki_hsm_modulename=nfast
pki_hsm_modulename
の値は任意の値に設定できることに注意してください。上記の値は推奨値です。
トークン名を特定するには、root
ユーザーとして以下のコマンドを実行します。
/opt/nfast/bin/nfkminfo
# /opt/nfast/bin/nfkminfo
Module #1 Slot #0 IC 1
generation 1
phystype SmartCard
slotlistflags 0x2 SupportsAuthentication
state 0x5 Operator
flags 0x10000
shareno 1 (`CONNXC-1')
shares LTU(PIN) LTFIPS
error OK
Cardset
name "NHSM-CONN-XC"
k-out-of-n 1/2
flags Persistent PINRecoveryForbidden(disabled) !RemoteEnabled
timeout none
card names "CONNXC-1" "CONNXC-2"
hkltu xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
gentime 2021-11-17 21:19:47
Module #1 Slot #1 IC 0
generation 1
phystype SoftToken
slotlistflags 0x0
state 0x2 Empty
flags 0x0
shareno 0
shares
error OK
No Cardset
No Pre-Loaded Objects
Cardset
セクションの name
フィールドの値は、トークン名を一覧表示します。
以下のようにトークン名を設定します。
pki_token_name=NHSM-CONN-XC
pki_token_name=NHSM-CONN-XC
SafeNet/Luna HSM パラメーター
SafeNet Luna Network HSM などの SafeNet / Luna HSM の場合は、次のパラメーターを指定します。
pki_hsm_libfile=/usr/safenet/lunaclient/lib/libCryptoki2_64.so pki_hsm_modulename=thalesluna
pki_hsm_libfile=/usr/safenet/lunaclient/lib/libCryptoki2_64.so
pki_hsm_modulename=thalesluna
pki_hsm_modulename
の値は任意の値に設定できることに注意してください。上記の値は推奨値です。
トークン名を特定するには、root
ユーザーとして以下のコマンドを実行します。
/usr/safenet/lunaclient/bin/vtl verify
# /usr/safenet/lunaclient/bin/vtl verify
The following Luna Slots/Partitions were found:
Slot Serial # Label
=== =============== =====
0 1209461834772 thaleslunaQE
label
列の値にはトークン名がリストされます。
以下のようにトークン名を設定します。
pki_token_name=thaleslunaQE
pki_token_name=thaleslunaQE
Luna の制限の詳細は、「サポート対象のハードウェアセキュリティーモジュール」 を参照してください。
6.6.4. HSM 接続のテスト
HSM 接続をテストするには以下を行います。
一時データベースを作成します。
mkdir -p /root/tmp1
# mkdir -p /root/tmp1
Copy to Clipboard Copied! certutil -N -d /root/tmp1
# certutil -N -d /root/tmp1
Copy to Clipboard Copied! PKCS#11 ライブラリーモジュールをデータベースに追加します。
nShield Connect XC:
modutil -dbdir /root/tmp1 -nocertdb -add nfast -libfile /opt/nfast/toolkits/pkcs11/libcknfast.so
# modutil -dbdir /root/tmp1 -nocertdb -add nfast -libfile /opt/nfast/toolkits/pkcs11/libcknfast.so --- Module "nfast" added to database.
Copy to Clipboard Copied! Thales Luna:
modutil -dbdir ~/testLuna -nocertdb -add thalesluna -libfile /usr/safenet/lunaclient/lib/libCryptoki2_64.so
# modutil -dbdir ~/testLuna -nocertdb -add thalesluna -libfile /usr/safenet/lunaclient/lib/libCryptoki2_64.so --- Module "thalesluna" added to database.
Copy to Clipboard Copied!
モジュールを一覧表示し、次のステップのために "token:" の HSM 名を書き留めます (たとえば、次の例の NHSM-CONN-XC)。
modutil -dbdir /root/tmp1 -list
# modutil -dbdir /root/tmp1 -list 1. NSS Internal PKCS #11 Module … token: NSS FIPS 140-2 Certificate DB … 2. nfast … token: accelerator … token: NHSM-CONN-XC …
Copy to Clipboard Copied! このトークンの証明書を表示します。
certutil -L -d /root/tmp1 -h <token name>
# certutil -L -d /root/tmp1 -h <token name>
Copy to Clipboard Copied!