

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為 AWS CloudHSM 加密主管設定規定人數身分驗證
<a name="quorum-authentication-crypto-officers-first-time-setup"></a>

下列主題說明設定硬體安全模組 (HSM) 時必須完成的步驟，以便 AWS CloudHSM [加密主管 (COs)](understanding-users-cmu.md#crypto-officer) 可以使用規定人數身分驗證。第一次針對 CO 設定規定人數身分驗證時，您只需要執行一次下列步驟。完成這些步驟之後，請參閱 [針對 Management Utility 啟用規定人數身分驗證的使用者 AWS CloudHSM 管理](quorum-authentication-crypto-officers.md)。

**Topics**
+ [先決條件](#quorum-crypto-officers-prerequisites)
+ [步驟 1. 建立和註冊用於簽署的金鑰](#quorum-crypto-officers-create-and-register-key)
+ [步驟 2. 設定 HSM 上的規定人數最小值](#quorum-crypto-officers-set-quorum-minimum-value)

## 先決條件
<a name="quorum-crypto-officers-prerequisites"></a>

若要了解此範例，您應熟悉 [cloudhsm\$1mgmt\$1util (CMU) 命令列工具](cloudhsm_mgmt_util.md)。在此範例中， AWS CloudHSM 叢集有兩個 HSMs，每個都有相同的 COs，如 **listUsers**命令的下列輸出所示。如需有關建立使用者的詳細資訊，請參閱[HSM 使用者](manage-hsm-users.md)。

```
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
```

## 步驟 1. 建立和註冊用於簽署的金鑰
<a name="quorum-crypto-officers-create-and-register-key"></a>

若要使用規定人數身分驗證，每個管理員都必須執行下列*所有*步驟：

**Topics**
+ [建立 RSA 金鑰對](#mofn-key-pair-create)
+ [建立並簽署註冊權杖](#mofn-registration-token)
+ [用 HSM 註冊公有金鑰](#mofn-register-key)

### 建立 RSA 金鑰對
<a name="mofn-key-pair-create"></a>

建立和保護金鑰對有許多不同的方式。下列範例示範使用 [OpenSSL](https://www.openssl.org/) 的做法。

**Example – 使用 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:
```

接下來，使用您剛建立的私有金鑰來產生公有金鑰。

**Example – 使用 OpenSSL 建立一個公有金鑰**  
下列範例會示範如何使用 OpenSSL 根據您剛建立的私有金鑰建立公有金鑰。  

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

### 建立並簽署註冊權杖
<a name="mofn-registration-token"></a>

 您可以建立一個權杖並使用在上一步中剛產生的私有金鑰簽署該權杖。

**Example – 建立權杖**  
註冊權杖只是一個最大不超過 245 位元組的任何隨機資料的檔案。您可以使用私有金鑰簽署權杖，以證明您可以訪問私有金鑰。下列命令使用 echo 將字串重新導向到一個檔案。  

```
$ echo <token to be signed> > officer1.token
```

簽署權杖並將其儲存至簽章檔案。您需要已簽署的權杖、未簽署的權杖和公有金鑰，才能在 HSM 中將 CO 註冊為 MofN 使用者。

**Example – 簽署權杖**  
使用 OpenSSL 和私有金鑰來簽署註冊權杖並建立簽章檔案。  

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

### 用 HSM 註冊公有金鑰
<a name="mofn-register-key"></a>

建立金鑰之後，CO 必須向 HSM 註冊金鑰的公有部分 (公有金鑰)。

**向 HSM 註冊公有金鑰**

1. 使用下列命令來啟動 cloudhsm\$1mgmt\$1util 命令列工具。

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. 使用 **loginHSM** 命令以 CO 身分登入 HSM。如需詳細資訊，請參閱 [使用 CloudHSM 管理公用程式 (CMU) 進行 HSM 使用者管理](manage-hsm-users-cmu.md)。

1. 使用 **[registerQuorumPubKey](cloudhsm_mgmt_util-registerQuorumPubKey.md)** 命令來註冊公有金鑰。如需詳細資訊，請參閱下列範例或使用 **help registerQuorumPubKey** 命令。

**Example – 向 HSM 註冊公有金鑰**  
下列範例顯示如何在 cloudhsm\$1mgmt\$1util 命令列工具中使用 **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\$1PKCS 機制簽名雜湊的檔案路徑。  
必要：是  
**<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
```

## 步驟 2. 設定 HSM 上的規定人數最小值
<a name="quorum-crypto-officers-set-quorum-minimum-value"></a>

若要對 CO 使用規定人數身分驗證，CO 必須登入 HSM，然後設定*規定人數最小值*，也稱為 *m 值*。這是執行 HSM 使用者管理操作所需的 CO 核准數下限。HSM 上的任何 CO (包括尚未註冊用於簽署的金鑰的 CO) 可以設定規定人數最小值。您隨時可以變更規定人數最小值。如需更多資訊，請參閱 [變更最小值](quorum-authentication-crypto-officers-change-minimum-value.md)。

**設定 HSM 上的規定人數最小值**

1. 使用下列命令來啟動 cloudhsm\$1mgmt\$1util 命令列工具。

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. 使用 **loginHSM** 命令以 CO 身分登入 HSM。如需詳細資訊，請參閱[使用 CloudHSM 管理公用程式 (CMU) 進行 HSM 使用者管理](manage-hsm-users-cmu.md)。

1. 使用 **setMValue** 命令來設定規定人數最小值。如需詳細資訊，請參閱下列範例或使用 **help setMValue** 命令。

**Example – 設定 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\$1MGMT | HSM 使用者管理 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-authentication-crypto-officers-first-time-setup.html)  | 
| 4 | MISC\$1CO | 其他 CO 服務 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-authentication-crypto-officers-first-time-setup.html)  | 

若要取得服務的規定人數最小值，請使用 **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。

完成這些步驟之後，請參閱 [針對 Management Utility 啟用規定人數身分驗證的使用者 AWS CloudHSM 管理](quorum-authentication-crypto-officers.md)。