次を用意してください。
- AWS CloudHSM クラスター ↗ をプロビジョニング済みであること。
- PKCS#11 向けの適切なソフトウェアライブラリ ↗ をインストール済みであること。
公開鍵をインポートする前に、認証局(CA)から受け取った証明書から公開鍵を取り出します。秘密鍵の内容を privkey.pem に置き、次のコマンドを実行して pubkey.pm を作成します(certificate.pem は実際の証明書に置き換えてください)。
keyserver$ openssl x509 -pubkey -noout -in certificate.pem > pubkey.pem以前作成した 暗号ユーザー ↗(crypto user、CU)アカウントで CloudHSM にログインし、秘密鍵のインポートに使う鍵暗号化鍵を生成します。
keyserver$ /opt/cloudhsm/bin/key_mgmt_util
Command: loginHSM -u CU -s patrick -p donahue
Command: genSymKey -t 31 -s 16 -sess -l import-wrapping-key
...
Symmetric Key Created. Key Handle: 658
...上で返されたキーハンドルを指定して、秘密鍵と公開鍵をインポートし、HSM からログアウトします。
Command: importPrivateKey -f privkey.pem -l mykey -id 1 -w 658
...
Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS
Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS
Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS
...
Private Key Unwrapped. Key Handle: 658
Command: importPubKey -f pubkey.pem -l mykey -id 1
Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS
...
Public Key Handle: 941
Command: logoutHSM
Command: exit鍵の配置が終わったら、起動時にキーサーバーが読み込む設定ファイルを変更します。object=mykey と pin-value=username:password を、指定したキーラベルと作成した CU ユーザーに合わせて変更します。
/etc/keyless/gokeyless.yaml を開き、次の直後に追記します。
private_key_stores:
- dir: /etc/keyless/keys追加する内容:
- uri: pkcs11:token=cavium;object=mykey?module-path=/opt/cloudhsm/lib/libcloudhsm_pkcs11_standard.so&pin-value=patrick:donahue&max-sessions=1設定ファイルを保存したら gokeyless を再起動し、正常に起動したことを確認します。
sudo systemctl restart gokeyless.service
sudo systemctl status gokeyless.service -l