为 AWS CloudHSM 管理实用程序用户创建启用了 2FA 的用户
使用 AWS CloudHSM 管理实用程序 CMU(CMU)和密钥对创建启用了双重身份验证(2FA)的新加密员(CO)用户。
创建启用 2FA 的 CO 用户
-
在一个终端中执行以下步骤:
访问您的 HSM 并登录 CloudHSM 管理实用程序:
/opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
以 CO 身份登录,使用以下命令创建启用 2FA 的新用户 MFA:
aws-cloudhsm>createUser CO MFA
*************************CAUTION********************************This is a CRITICAL operation, should be done on all nodes in the cluster. AWS does NOT synchronize these changes automatically with the nodes on which this operation is not executed or failed, please ensure this operation is executed on all nodes in the cluster. **************************************************************** Do you want to continue(y/n)? yCreating User exampleuser3(CO) on 1 nodesAuthentication data written to: "/home/ec2-user/authdata"Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below.Leave this field blank to use the path initially provided.Enter filename:<CO USER NAME>
-2fa /home/ec2-user/authdata使上述终端保持该状态。请勿按回车键或输入任何文件名。
在另一个终端中执行以下步骤:
-
访问您的 HSM 并登录 CloudHSM 管理实用程序:
/opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
使用以下命令生成公有密钥/私有密钥对:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
运行以下命令安装 json 查询功能,以从 authdata 文件中提取摘要:
sudo yum install jq
要提取摘要值,请先在 authdata 文件中找到以下数据:
{ "Version":"1.0", "PublicKey":"", "Data":[ { "HsmId":
<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"" } ] }注意
所得摘要采用 base64 编码,但如要签署摘要,则需先解码文件再进行签名。以下命令将解码摘要并将解码后的内容存储在 ‘digest1.bin’ 中
cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
-
转换公有密钥内容,添加 "\n" 并删除空格,如下所示:
-----BEGIN PUBLIC KEY-----\n
<PUBLIC KEY>
\n-----END PUBLIC KEY-----重要
上述命令显示了如何在 BEGIN PUBLIC KEY----- 后立即添加 "\n"、如何删除 "\n" 与公有密钥的第一个字符之间的空格,如何在 -----END PUBLIC KEY 前添加 "\n",以及如何删除 "\n" 与公有密钥结尾处之间的空格。
这是 authdata 文件中接受的公有密钥的 PEM 格式。
将公有密钥 pem 格式的内容粘贴到 authdata 文件中的公有密钥部分。
vi authdata
{ "Version":"1.0", "PublicKey":"-----BEGIN PUBLIC KEY-----\n
<"PUBLIC KEY">
\n-----END PUBLIC KEY-----", "Data":[ { "HsmId":<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":”” } ] }使用以下命令签署令牌文件:
openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64
Output Expected:<"THE SIGNATURE">
注意
如上述命令所示,使用 openssl pkeyutl 而不是 openssl dgst 进行签名。
在 Authdata 文件的“签名”字段中添加已签名的摘要。
vi authdata
{ "Version": "1.0", "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----", "Data": [ { "HsmId":
<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"Kkdl ... rkrvJ6Q=="
}, { "HsmId":<"HSM ID">
, "Digest":<"DIGEST">
, "Signature":"K1hxy ... Q261Q=="
} ] }
-
-
返回第一个终端并按
Enter
:Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below. Leave this field blank to use the path initially provided. Enter filename: >>>>> Press Enter here createUser success on server 0(10.0.1.11)