使用面向加密员(CO)的仲裁身份验证:首次设置 - AWS CloudHSM

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用面向加密员(CO)的仲裁身份验证:首次设置

下列主题描述要配置硬件安全模块(HSM, hardware security module)必须完成的步骤,以便加密员(CO) 可以使用仲裁身份验证。当您首次为 CO 配置仲裁身份验证时,只需执行下列步骤一次。完成这些步骤后,请参阅 使用面向加密员(CO)的 Quorum 身份验证

先决条件

要理解此示例,应熟悉 cloudhsm_mgmt_util (CMU) 命令行工具。在此示例中, AWS CloudHSM 集群有两个 HSM,每个 HSM 都有相同的 CoS,如listUsers命令的以下输出所示。有关创建用户的更多信息,请参见 管理 HSM 用户

aws-cloudhsm>listUsers Users on server 0(10.0.2.14): Number of users found:7 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PRECO admin NO 0 NO 2 AU app_user NO 0 NO 3 CO officer1 NO 0 NO 4 CO officer2 NO 0 NO 5 CO officer3 NO 0 NO 6 CO officer4 NO 0 NO 7 CO officer5 NO 0 NO Users on server 1(10.0.1.4): Number of users found:7 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PRECO admin NO 0 NO 2 AU app_user NO 0 NO 3 CO officer1 NO 0 NO 4 CO officer2 NO 0 NO 5 CO officer3 NO 0 NO 6 CO officer4 NO 0 NO 7 CO officer5 NO 0 NO

创建并注册签名密钥

要使用仲裁身份验证,每个 CO 都必须完成以下所有步骤:

创建 RSA 密钥对

创建和保护密钥对的方式有多种。以下示例说明如何使用 OpenSSL 执行该操作。

例 - 使用 OpenSSL 创建私有密钥

以下示例演示如何使用 OpenSSL 创建受密码保护的 2048 位 RSA 密钥。要使用此示例,请将 officer1.key 替换为您要存储密钥的文件的名称。

$ openssl genrsa -out officer1.key -aes256 2048 Generating RSA private key, 2048 bit long modulus .....................................+++ .+++ e is 65537 (0x10001) Enter pass phrase for officer1.key: Verifying - Enter pass phrase for officer1.key:

接下来,使用您刚刚创建的私钥生成公有密钥。

例 - 使用 OpenSSL 创建公有密钥

以下示例演示如何使用 OpenSSL,根据您刚刚创建的私有密钥创建公钥。

$ openssl rsa -in officer1.key -outform PEM -pubout -out officer1.pub Enter pass phrase for officer1.key: writing RSA key

创建注册令牌并签名

创建一个令牌,并使用上一步生成的私有密钥签名。

例 - 创建令牌

注册令牌只是一个包含任何随机数据的文件,其大小不超过 245 字节的最大值。您通过私有密钥对令牌进行签名,以证明您有权访问私钥。以下命令使用“回显”将字符串重定向到文件。

$ echo "token to be signed" > officer1.token

对令牌进行签名并将其保存到签名文件中。您需要已签名令牌、未签名令牌和公有密钥才能在 HSM 中将 CO 注册为 MofN 用户。

例 :签署令牌

使用 OpenSSL 和私钥对注册令牌签名,并创建签名文件:

$ openssl dgst -sha256 \ -sign officer1.key \ -out officer1.token.sig officer1.token

通过 HSM 注册公钥

在创建密钥之后,CO 必须向 HSM 注册密钥的公有部分 (公有密钥)。

向 HSM 注册公有密钥
  1. 使用以下命令启动 cloudhsm_mgmt_util 命令行工具。

    $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
  2. 使用 loginHSM 命令以 CO 身份登录 HSM。有关更多信息,请参阅 使用 CloudHSM 管理实用程序 (CMU, CloudHSM Management Utility) 管理 HSM 用户

  3. 使用 registerQuorumPubKey 命令注册公有密钥。有关更多信息,请参阅以下示例或使用 help registerQuorumPubKey 命令。

例 :向 HSM 注册公有密钥

以下示例说明如何使用 cloudhsm_mgmt_util 命令行工具中的 registerQuorumPubKey 命令向 HSM 注册 CO 的公有密钥。要使用此命令,CO 必须登录 HSM。将这些值替换为您自己的值:

aws-cloudhsm> registerQuorumPubKey CO <officer1> <officer1.token> <officer1.token.sig> <officer1.pub> *************************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)?y registerQuorumPubKey success on server 0(10.0.2.14)
<officer1.token>

包含未签名注册令牌的文件路径。可以有最大文件大小为 245 字节的任何随机数据。

必需:是

<officer1.token.sig>

包含注册令牌 SHA256_PKCS 机制签名哈希的文件路径。

必需:是

<officer1.pub>

包含非对称 RSA-2048 密钥对公有密钥的文件路径。使用私有密钥对注册令牌进行签名。

必需:是

在所有 CO 注册自己的公有密钥之后,来自 listUsers 命令的输出将在 MofnPubKey 列中显示它,如以下示例中所示。

aws-cloudhsm>listUsers Users on server 0(10.0.2.14): Number of users found:7 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PRECO admin NO 0 NO 2 AU app_user NO 0 NO 3 CO officer1 YES 0 NO 4 CO officer2 YES 0 NO 5 CO officer3 YES 0 NO 6 CO officer4 YES 0 NO 7 CO officer5 YES 0 NO Users on server 1(10.0.1.4): Number of users found:7 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PRECO admin NO 0 NO 2 AU app_user NO 0 NO 3 CO officer1 YES 0 NO 4 CO officer2 YES 0 NO 5 CO officer3 YES 0 NO 6 CO officer4 YES 0 NO 7 CO officer5 YES 0 NO

在 HSM 上设置仲裁最小值

要使用 CO 仲裁身份验证,CO 必须登录 HSM,然后设置仲裁最小值 (也称为 m 值)。这是执行 HSM 用户管理操作所需的最少数量的 CO 审批。HSM 上的任何 CO (包括尚未注册签名密钥的 CO) 都可设置仲裁最小值。您可以随时更改仲裁最小值;有关更多信息,请参阅更改最小值

在 HSM 上设置仲裁最小值
  1. 使用以下命令启动 cloudhsm_mgmt_util 命令行工具。

    $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
  2. 使用 loginHSM 命令以 CO 身份登录 HSM。有关更多信息,请参阅 使用 CloudHSM 管理实用程序 (CMU, CloudHSM Management Utility) 管理 HSM 用户

  3. 使用 setMValue 命令设置仲裁最小值。有关更多信息,请参阅以下示例或使用 help setMValue 命令。

例 - 在 HSM 上设置仲裁最小值

此示例使用仲裁最小值 2。您可以选择介于二 (2) 到八 (8) 范围之内的任何值 (最多为 HSM 上的 CO 总数量)。在此示例中,HSM 有 6 个 CO,因此最大可取值为 6。

要使用以下示例命令,请将最终数量 (2) 替换为首选仲裁最小值。

aws-cloudhsm>setMValue 3 2 *************************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)?y Setting M Value(2) for 3 on 2 nodes

在前面的示例中,第一个数字 (3) 标识您将为其设置仲裁最小值的 HSM 服务

下表列出了 HSM 服务标识符及其名称、描述和服务所包含命令。

服务标识符 服务名称 服务描述 HSM 命令
3 USER_MGMT HSM 用户管理
  • createUser

  • deleteUser

  • changePswd(仅适用于更改其他 HSM 用户的密码)

4 MISC_CO 其他 CO 服务
  • setMValue

要获取服务的仲裁最小值,请使用 getMValue 命令,如以下示例所示。

aws-cloudhsm>getMValue 3 MValue of service 3[USER_MGMT] on server 0 : [2] MValue of service 3[USER_MGMT] on server 1 : [2]

来自前面的 getMValue 命令的输出显示,HSM 用户管理操作(服务 3)的仲裁最小值现在为 2。

完成这些步骤后,请参阅 使用面向加密员(CO)的 Quorum 身份验证