次の例は、IBM Cloud HSM 7.0 ↗ で検証しています。これは Gemalto SafeNet Luna a750 を基盤とする、FIPS 140-2 Level 3 認定の実装です。
次の準備ができていることを確認してください。
- デバイス ↗ の初期化
- SafeNet クライアントソフトウェア ↗ のインストール
最初の手順は、HSM パーティションの作成です。パーティションは、IBM Cloud HSM デバイス内の独立した論理 HSM と考えられます。
vm$ ssh admin@hsm
[cloudflare-hsm.softlayer.com] lunash:>partition create -partition KeylessSSL
Type 'proceed' to create the partition, or
'quit' to quit now.
> proceed
'partition create' successful.
Command Result : 0 (Success)次に、パーティションをクライアント(この場合は鍵サーバー)に割り当てます。
[cloudflare-hsm.softlayer.com] lunash:>client assignpartition -client cloudflare-vm.softlayer.com -partition KeylessSSL
'client assignPartition' successful.
Command Result : 0 (Success)割り当てが終わったら、仮想サーバーで lunacm を実行し、パーティションを初期化します。
vm$ lunacm
LunaCM v7.1.0-379. Copyright (c) 2006-2017 SafeNet.
Available HSMs:
Slot Id -> 0
Label ->
Serial Number -> XXXXXXXXXXXXX
Model -> LunaSA 7.0.0
Firmware Version -> 7.0.1
Configuration -> Luna User Partition With SO (PW) Signing With Cloning Mode
Slot Description -> Net Token Slot
Current Slot Id: 0
lunacm:>partition init -label KeylessSSL -domain cloudflare
Enter password for Partition SO: ********
Re-enter password for Partition SO: ********
You are about to initialize the partition.
All contents of the partition will be destroyed.
Are you sure you wish to continue?
Type 'proceed' to continue, or 'quit' to quit now ->proceed
Command Result : No Error次のコマンドを実行する前に、情報セキュリティ担当または暗号担当に確認し、組織で承認されている鍵作成手順を把握してください。
この操作では、新しく生成する鍵の ID フィールドを指定する必要があります。値はビッグエンディアンの 16 進整数にしてください。
vm$ cmu generatekeypair -keyType=RSA -modulusBits=2048 -publicExponent=65537 -sign=1 -verify=1 -labelpublic=myrsakey -labelprivate=myrsakey -keygenmech=1 -id=a000
Please enter password for token in slot 0 : ********
# cmu generatekeypair -keyType=ECDSA -curvetype=3 -sign=1 -verify=1 -labelpublic=myecdsakey -labelprivate=myecdsakey -id=a001
Please enter password for token in slot 0 : ********
# cmu list
Please enter password for token in slot 0 : ********
handle=61 label=myecdsakey
handle=60 label=myecdsakey
handle=48 label=myrsakey
handle=45 label=myrsakey前の手順で作成した鍵を使い、公開信頼の認証局(CA)へ署名を依頼できる CSR を生成します。
# cmu requestCertificate -c="US" -o="Example, Inc." -cn="ibm-cloudhsm.example.com" -s="California" -l="San Francisco" -publichandle=45 -privatehandle=48 -outputfile="rsa.csr" -sha256withrsa
Please enter password for token in slot 0 : ********
Using "CKM_SHA256_RSA_PKCS" Mechanism
# cmu requestCertificate -c="US" -o="Example, Inc." -cn="ibm-cloudhsm.example.com" -s="California" -l="San Francisco" -publichandle=60 -privatehandle=61 -outputfile="ecdsa.csr" -sha256withecdsa
Please enter password for token in slot 0 : ********
Using "CKM_ECDSA_SHA256" Mechanism前の手順で作成した CSR を、組織が使う CA に提出します。求められたとおりドメインの管理権限を示し、署名済み SSL 証明書をダウンロードします。手順は Keyless SSL 証明書をアップロードする を参照してください。
最後に、鍵サーバーが起動時に読む設定ファイルを変更します。object=mykey と pin-value=username:password の値を、指定した鍵ラベルと作成した CU ユーザーに合わせて変更します。
/etc/keyless/gokeyless.yaml を開き、次の直後に追記します。
private_key_stores:
- dir: /etc/keyless/keys次を追加します。
- uri: pkcs11:token=KeylessSSL;object=myrsakeyid=a000??module-path=/usr/safenet/lunaclient/lib/libCryptoki2_64.so&pin-value=password&max-sessions=1
- uri: pkcs11:token=KeylessSSL;object=myecdsakeyid=a001??module-path=/usr/safenet/lunaclient/lib/libCryptoki2_64.so&pin-value=password&max-sessions=1設定ファイルを保存したら、gokeyless を再起動し、正常に起動したことを確認します。
sudo systemctl restart gokeyless.service
sudo systemctl status gokeyless.service -l