

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

# 使用 KMU 產生 AWS CloudHSM DSA 金鑰對
<a name="key_mgmt_util-genDSAKeyPair"></a>

使用 AWS CloudHSM key\$1mgmt\$1util 工具中的 **genDSAKeyPair**命令，在您的硬體安全模組 (HSM) 中產生[數位簽署演算法 ](https://en.wikipedia.org/wiki/Digital_Signature_Algorithm)(DSA) 金鑰對。您必須指定模數長度；命令會產生模數值。您還可以指派 ID、將金鑰與其他 HSM 使用者共用、建立不可擷取的金鑰，以及建立當工作階段結束時就過期的金鑰。命令成功時會傳回 HSM 指派給公有和私有金鑰的*金鑰控制代碼*。您可以使用金鑰控制代碼來向其他命令識別金鑰。

執行任何 key\$1mgmt\$1util 命令之前，您必須先[啟動 key\$1mgmt\$1util](key_mgmt_util-setup.md#key_mgmt_util-start) 並以加密使用者 (CU) 的身分[登入](key_mgmt_util-log-in.md) HSM。

**提示**  
如要尋找您已建立之金鑰的屬性，例如類型、長度、標籤和 ID，請使用 [getAttribute](key_mgmt_util-getAttribute.md)。如要尋找特定使用者的金鑰，請使用 [getKeyInfo](key_mgmt_util-getKeyInfo.md)。如要根據金鑰屬性值來尋找金鑰，請使用 [findKey](key_mgmt_util-findKey.md)。

## 語法
<a name="genDSAKeyPair-syntax"></a>

```
genDSAKeyPair -h

genDSAKeyPair -m <modulus length> 
              -l <label> 
              [-id <key ID>] 
              [-min_srv <minimum number of servers>] 
              [-m_value <0..8>]
              [-nex] 
              [-sess] 
              [-timeout <number of seconds> ]
              [-u <user-ids>] 
              [-attest]
```

## 範例
<a name="genDSAKeyPair-examples"></a>

下列範例示範如何使用 **genDSAKeyPair** 來建立 DSA 金鑰對。

**Example ：建立 DSA 金鑰對**  
此命令建立標籤為 `DSA` 的 DSA 金鑰對。輸出顯示公有金鑰的金鑰控制代碼是 `19`，而私有金鑰的控制代碼是 `21`。  

```
Command: genDSAKeyPair -m 2048 -l DSA

        Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

        Cfm3GenerateKeyPair:    public key handle: 19    private key handle: 21

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

**Example ：建立僅限工作階段的 DSA 金鑰對**  
此命令會建立只在目前工作階段中有效的 DSA 金鑰對。除了必要的 (非唯一) 標籤，此命令還會指派 `DSA_temp_pair` 的唯一 ID。您可以建立像這樣的金鑰對，以簽署和驗證僅限工作階段的字符。輸出顯示公有金鑰的金鑰控制代碼是 `12`，而私有金鑰的控制代碼是 `14`。  

```
Command: genDSAKeyPair -m 2048 -l DSA-temp -id DSA_temp_pair -sess

        Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

        Cfm3GenerateKeyPair:    public key handle: 12    private key handle: 14

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```
若要確認金鑰對只存在於工作階段中，請使用 `-sess`findKey[ 的 ](key_mgmt_util-findKey.md) 參數，且值為 `1` (true)。  

```
  Command: findKey -sess 1

  Total number of keys present 2

 number of keys matched from start index 0::1
12, 14

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

        Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
```

**Example ：建立共用、不可擷取的 DSA 金鑰對**  
此命令建立 DSA 金鑰對。私有金鑰共用給其他三個使用者，且無法從 HSM 匯出。公有金鑰可供任何使用者使用，且一律可擷取。  

```
        Command:  genDSAKeyPair -m 2048 -l DSA -id DSA_shared_pair -nex -u 3,5,6

        Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

        Cfm3GenerateKeyPair:    public key handle: 11    private key handle: 19

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

**Example ：建立規定人數控制的金鑰對**  
此命令建立標籤為 `DSA-mV2` 的 DSA 金鑰對。此命令使用 `-u` 參數，將私有金鑰共用給使用者 4 和 6。此命令使用 `-m_value` 參數，針對任何使用私有金鑰的加密操作，要求至少兩次核准的仲裁。此命令還使用 `-attest` 參數，以驗證用來產生金鑰對的韌體完整性。  
輸出顯示命令已產生金鑰控制代碼為 `12` 的公用金鑰，以及金鑰控制代碼 `17` 的私有金鑰，且已通過對叢集韌體的證實檢查。  

```
        Command:  genDSAKeyPair -m 2048 -l DSA-mV2 -m_value 2 -u 4,6 -attest

        Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

        Cfm3GenerateKeyPair:    public key handle: 12    private key handle: 17

        Attestation Check : [PASS]

        Cluster Error Status
        Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```
此命令使用私有金鑰 (金鑰控制代碼 `17`) 上的 [getKeyInfo](key_mgmt_util-getKeyInfo.md)。輸出確認金鑰由目前的使用者 (使用者 3) 擁有，且共用給使用者 4 和 6 (沒有其他任何人)。輸出也顯示規定人數身分驗證已啟用，且規定人數為 2。  

```
        Command:  getKeyInfo -k 17

        Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

        Owned by user 3

        also, shared to following 2 user(s):

                 4
                 6
         2 Users need to approve to use/manage this key
```

## Parameters
<a name="genDSAKeyPair-params"></a>

**-h**  
顯示命令的說明。  
必要：是

**-m**  
指定模數的長度 (以位元為單位)。唯一有效的值為 `2048`。  
必要：是

**-l**  
指使用者定義的金錀對標籤。輸入一個字串。相同標籤套用至金錀對中的兩個金鑰。`label` 的大小上限為 127 個字元。  
您可以使用任何可以幫助您識別金錀的片語。標籤不具唯一性，因此您可使用標籤將金錀進行分組和分類。  
必要：是

**-id**  
指使用者定義的金錀對識別符。輸入叢集中唯一的字串。預設為空字串。您指定的 ID 會套用至金錀對中的兩個金鑰。  
預設：無 ID 值。  
必要：否

**-min\$1srv**  
指在 `-timeout` 參數值過期之前同步金鑰所需的 HSM 數量下限。如果未在規定時間內同步至指定數量的伺服器，金鑰就不會建立。  
AWS CloudHSM 會自動將每個金鑰同步到叢集中的每個 HSM。要加速流程，請將 `min_srv` 值設定為少於叢集中之 HSM 的數量，並設定低逾時值。然而，請注意有些請求可能不會產生金鑰。  
預設：1  
必要：否

**-m\$1value**  
指須核准使用金錀對中私有金鑰之密碼編譯操作的使用者數量。輸入 `0` 到 `8` 之間的值。  
此參數會建立私有金鑰的規定人數驗證要求。預設值 `0` 會停用金鑰的規定人數驗證功能。啟用規定人數驗證時，指定數目的使用者必須簽署權杖，才能核准使用私用金鑰的密碼編譯操作，以及核准共用或取消共用私有金鑰的操作。  
如要尋找金鑰的 `m_value`，請使用 [getKeyInfo](key_mgmt_util-getKeyInfo.md)。  
只有當命令中的 `-u` 參數與一定數量的使用者共用金鑰對以符合 `m_value` 要求時，此參數才有效。  
預設：0  
必要：否

**-nex**  
使私有金鑰無法擷取。產生的私有金鑰無法[從 HSM 匯出](export-keys.md)。公有金錀始終可擷取。  
預設：金鑰對中的公有金鑰和私有金鑰均可擷取。  
必要：否

**-sess**  
建立只在目前工作階段中存在的金鑰。工作階段結束後，金鑰無法復原。  
當您僅短暫需要金鑰 (例如，加密後快速解密另一個金鑰的包裝金鑰) 時，請使用此參數。請勿使用工作階段金鑰來加密工作階段結束後可能需要解密的資料。  
若要將工作階段金鑰更改為持久性 (權杖) 金鑰，請使用 [setAttribute](key_mgmt_util-setAttribute.md)。  
預設：此金鑰是持久性金鑰。  
必要：否

**-timeout**  
指命令等待金鑰同步到 `min_srv` 參數指定數目的 HSM 的時長 (以秒為單位)。  
此參數只有在命令中同時使用 `min_srv` 參數時才有效。  
預設：無逾時。該命令會無限期等待，並且僅在將金錀同步到最小數目的伺服器時才返回。  
必要：否

**-u**  
與指定使用者共用金錀對中的私有金鑰。此參數允許其他 HSM 加密使用者 (CU) 在密碼編譯操作中使用此金鑰。任何使用者均可在無需共用的情況下使用公有金錀。  
輸入以逗號分隔的 HSM 使用者 ID 清單，例如 -`u 5,6`。請勿包含現行使用者的 HSM 使用者 ID。若要尋找 HSM 上 CU 的 HSM 使用者 ID，請使用 [listUsers](key_mgmt_util-listUsers.md)。之後，如要共用或取消共用現有金鑰，請使用 cloudhsm\$1mgmt\$1util 中的 [shareKey](cloudhsm_mgmt_util-shareKey.md)。  
預設：只有目前使用者能使用匯入的私有金鑰。  
必要：否

**-attest**  
執行完整性檢查，以驗證執行叢集的韌體未被篡改。  
預設：無認證檢查。  
必要：否

## 相關主題
<a name="genDSAKeyPair-seealso"></a>
+ [genRSAKeyPair](key_mgmt_util-genRSAKeyPair.md)
+ [genSymKey](key_mgmt_util-genSymKey.md)
+ [genECCKeyPair](key_mgmt_util-genECCKeyPair.md)