

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

# 變更 AWS CloudHSM 用戶端金鑰耐久性設定
<a name="working-client-sync"></a>

金鑰同步處理大部分是自動程序，但您可以管理用戶端金鑰耐久性設定。用戶端金鑰耐久性設定在用戶端 SDK 5 和用戶端 SDK 3 中的運作方式不同。
+ 在用戶端 SDK 5 中，我們介紹了*金鑰可用性定額組*的概念。此概念要求您至少使用兩個 HSM 執行叢集。您可以使用用戶端金鑰耐久性設定來選擇退出兩個 HSM 需求。如需定額組的詳細資訊，請參閱 [AWS CloudHSM 關鍵概念](concepts-key-sync.md)。
+ 在用戶端 SDK 3 中，您可以使用用戶端金鑰耐久性設定來指定必須成功建立金鑰的 HSM 數目，整體作業才會視為成功。

## 用戶端 SDK 5 用戶端金鑰耐久性設定
<a name="client-sync-sdk8"></a>

在用戶端 SDK 5 中，金鑰同步處理是完全自動的程序。透過金鑰可用性定額組，新建立的金鑰在您的應用程式使用金鑰前必須存在於叢集中的兩個 HSM 上。若要使用金鑰可用性定額組，您的叢集必須至少要有兩個 HSM。

如果您的叢集組態不符合金鑰耐久性需求，則建立或使用權杖金鑰的任何嘗試都會失敗，並在日誌中顯示下列錯誤訊息：

```
Key <key handle> does not meet the availability requirements - The key must be available on at least 2 HSMs before being used.
```

您可以使用用戶端組態設定來選擇退出金鑰可用性定額組。例如，您可能想要選擇退出以單一 HSM 執行叢集。

### 用戶端 SDK 5 概念
<a name="client-sync-8concept"></a>

**金鑰可用性定額組**  
AWS CloudHSM 指定叢集中的 HSMs 數目，在應用程式可以使用金鑰之前，金鑰必須存在於其中。需要至少有兩個 HSM 的叢集。

### 管理用戶端金鑰耐久性設定
<a name="setting-file-sdk8"></a>

若要管理用戶端金鑰耐久性設定，您必須使用用戶端 SDK 5 的設定工具。

------
#### [ PKCS \$111 library ]

**在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  $ sudo /opt/cloudhsm/bin/configure-pkcs11 --disable-key-availability-check
  ```

**在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --disable-key-availability-check
  ```

------
#### [ OpenSSL Dynamic Engine ]

**在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  $ sudo /opt/cloudhsm/bin/configure-dyn --disable-key-availability-check
  ```

------
#### [ OpenSSL Dynamic Engine Provider ]

**在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  $ sudo /opt/cloudhsm/bin/configure-openssl-provider --disable-key-availability-check
  ```

------
#### [ Key Storage Provider (KSP) ]

**在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-ksp.exe" --disable-key-availability-check
  ```

------
#### [ JCE provider ]

**在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  $ sudo /opt/cloudhsm/bin/configure-jce --disable-key-availability-check
  ```

**在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --disable-key-availability-check
  ```

------
#### [ CloudHSM CLI ]

**在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  $ sudo /opt/cloudhsm/bin/configure-cli --disable-key-availability-check
  ```

**在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性**
+  使用設定工具來停用用戶端金鑰耐久性設定。

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" --disable-key-availability-check
  ```

------

## 用戶端 SDK 3 用戶端金鑰耐久性設定
<a name="client-sync-sdk3"></a>

在用戶端 SDK 3 中，金鑰同步處理大部分是自動程序，但您可以使用用戶端金鑰耐久性設定，讓金鑰更耐久。您需要指定必須成功建立金鑰的 HSM 數目，整體作業才會視為成功。無論您選擇何種設定，用戶端同步處理始終都會盡最大努力嘗試將金鑰複製到叢集中的每個 HSM。您的設定會對您指定的 HSM 數量強制建立金鑰。如果您指定一個值，但系統無法將金鑰複製到該數目的 HSM，則系統會自動清除任何不需要的金鑰材料，您可以再試一次。

**重要**  
如果您未設定用戶端金鑰耐久性設定 (或使用預設值 1)，您的金鑰容易遺失。如果您目前的 HSM 應該在伺服器端服務將該金鑰複製到另一個 HSM 之前失敗，您就會遺失金鑰材料。

若要最大化金鑰持久性，請考慮為用戶端同步處理指定至少兩個 HSM。請記住，無論您指定了多少 HSM，叢集上的工作負載都保持不變。用戶端同步處理一律會盡最大努力嘗試將金鑰複製到叢集中的每個 HSM。

**建議**
+ **最小值**：每個叢集兩個 HSM
+ **最大值**：少於叢集中 HSM 總數的一個值

如果用戶端同步處理失敗，用戶端服務會清除任何可能已建立且現在不需要的多餘金鑰。這種清理是盡力而為的回應，可能並非不總是有效。如果清理失敗，您可能必須刪除不需要的金鑰材料。如需詳細資訊，請參閱[金鑰同步處理失敗](ts-client-sync-fail.md)。

### 設定用戶端金鑰耐久性的組態檔案
<a name="setting-file"></a>

若要指定用戶端金鑰耐久性設定，您必須編輯 `cloudhsm_client.cfg`。

**編輯用戶端組態檔案**

1. 打開 `cloudhsm_client.cfg`。

   **Linux**︰

   ```
   /opt/cloudhsm/etc/cloudhsm_client.cfg
   ```

   **Windows**：

   ```
   C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg
   ```

1. 在 檔案的`client`節點中，新增`create_object_minimum_nodes`並指定 HSMs 數目下限的值，該值 AWS CloudHSM 必須成功建立金鑰，金鑰建立操作才能成功。

   ```
   "create_object_minimum_nodes" : 2
   ```
**注意**  
key\$1mgmt\$1util (KMU) 命令列工具有用戶端金鑰耐久性的額外設定。如需詳細資訊，請參閱[KMU 與用戶端同步](#kmu-sync)

#### 組態參考
<a name="client-side-ref"></a>

以下是用戶端同步處理屬性，如 `cloudhsm_client.cfg` 的摘錄所示：

```
{
    "client": {
        "create_object_minimum_nodes" : 2,
        ...
    },
    
    ...
}
```

**create\$1object\$1minimum\$1nodes**  
指定認為金鑰產生、金鑰匯入或金鑰解除包裝作業成功所需的 HSM 數目下限。如果設定，則預設值為 1。即：對於每個金鑰建立作業，用戶端服務都會嘗試在叢集中的每個 HSM 上建立金鑰，但若要傳回成功，只需要在叢集中的一個 HSM 上建立*單一金鑰*。

### KMU 與用戶端同步
<a name="kmu-sync"></a>

如果您使用 key\$1mgmt\$1util (KMU) 命令列工具建立金鑰，您可以使用選用的命令列參數 (`-min_srv`) 來*限制*需要複製金鑰的 HSM 數目。如果您指定命令列參數*和*組態檔案中的值， 會 AWS CloudHSM 傳回兩個值的 LARGER。

 如需詳細資訊，請參閱下列主題：
+ [genDSAKeyPair](key_mgmt_util-genDSAKeyPair.md)
+ [genECCKeyPair](key_mgmt_util-genECCKeyPair.md)
+ [genRSAKeyPair](key_mgmt_util-genRSAKeyPair.md)
+ [genSymKey](key_mgmt_util-genSymKey.md)
+ [importPrivateKey](key_mgmt_util-importPrivateKey.md)
+ [importPubKey](key_mgmt_util-importPubKey.md)
+ [imSymKey](key_mgmt_util-imSymKey.md)
+ [insertMaskedObject](key_mgmt_util-insertMaskedObject.md)
+ [unWrapKey](key_mgmt_util-unwrapKey.md)