

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

# 如何使用信任的金鑰在 中包裝資料金鑰 AWS CloudHSM
<a name="wrap_keys_using_trusted"></a>

若要使用信任的金鑰來包裝資料金鑰 AWS CloudHSM，您必須完成三個基本步驟：

1. 對於您計劃使用可信任金鑰包裝的資料金鑰，請將其 `CKA_WRAP_WITH_TRUSTED` 屬性設定為 true。

1. 對於您計劃用來包裝資料金鑰的可信任金鑰，請將其 `CKA_TRUSTED` 屬性設定為 true。

1. 使用可受信任金鑰來包裝資料金鑰。

## 步驟 1：將資料金鑰的 `CKA_WRAP_WITH_TRUSTED` 設定為 true
<a name="w2aac15c19c11b7"></a>

對於要包裝的資料金鑰，選擇以下選項之一以將金鑰的 `CKA_WRAP_WITH_TRUSTED` 屬性設定為 true。這樣做會限制資料金鑰，因此應用程式只能使用可信任金鑰來包裝。

### 選項 1：如果產生一個新的金鑰，將 `CKA_WRAP_WITH_TRUSTED` 設定為 true
<a name="w2aac15c19c11b7b5"></a>

使用 [PKCS \$111](pkcs11-library.md)、[JCE](java-library.md) 或 [CloudHSM CLI](cloudhsm_cli.md) 產生金鑰。如需詳細資訊，請參閱下列範例。

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

若要使用 PKCS \$111 產生金鑰，您需要將金鑰的 `CKA_WRAP_WITH_TRUSTED` 屬性設定為 true。為此，請先將此屬性包含在金鑰的 `CK_ATTRIBUTE template` 中，然後將屬性設定為 true，如下列範例所示：

```
CK_BYTE_PTR label = "test_key";
CK_ATTRIBUTE template[] = {
        {CKA_WRAP_WITH_TRUSTED, &true_val,         sizeof(CK_BBOOL)},
        {CKA_LABEL,             label,             strlen(label)},
        ...
};
```

如需詳細資訊，請參閱[使用 PKCS \$111 產生金鑰的公開示範範例](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)。

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

若要使用 JCE 產生金鑰，您需要將金鑰的 `WRAP_WITH_TRUSTED` 屬性設定為 true。為此，請先將此屬性包含在金鑰的 `KeyAttributesMap` 中，然後將屬性設定為 true，如下列範例所示：

```
final String label = "test_key";
final KeyAttributesMap keySpec = new KeyAttributesMap();
keySpec.put(KeyAttribute.WRAP_WITH_TRUSTED, true);
keySpec.put(KeyAttribute.LABEL, label);
...
```

如需詳細資訊，請參閱[使用 JCE 產生金鑰的公開示範範例](https://docs.aws.amazon.com/cloudhsm/latest/userguide/java-samples.html#java-samples-code_5)。

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

若要使用 CloudHSM CLI 產生金鑰，您需要將金鑰的 `wrap-with-trusted` 屬性設定為 true。為此，請將 `wrap-with-trusted=true` 包含在適合金鑰產生命令的引數：
+ 對於對稱金鑰，請將 `wrap-with-trusted` 新增至 `attributes` 引數中。
+ 對於公有金鑰，請將 `wrap-with-trusted` 新增至 `public-attributes` 引數中。
+ 對於私有金鑰，請將 `wrap-with-trusted` 新增至 `private-attributes` 引數中。

如需關於產生金鑰對的詳細資訊，請參閱 [CloudHSM CLI 中的 generate-asymmetric-pair 類別](cloudhsm_cli-key-generate-asymmetric-pair.md)。

如需關於產生對稱金鑰的詳細資訊，請參閱 [CloudHSM CLI 中的產生對稱類別](cloudhsm_cli-key-generate-symmetric.md)。

------

### 選項 2：如果使用現有金鑰，請使用 CloudHSM CLI 將其 `CKA_WRAP_WITH_TRUSTED` 設定為 true
<a name="w2aac15c19c11b7b7"></a>

若要將現有金鑰的 `CKA_WRAP_WITH_TRUSTED` 屬性設定為 true，請依照下列步驟執行：

1. 使用 [使用 CloudHSM CLI 登入 HSM](cloudhsm_cli-login.md) 命令以加密使用者 (CU) 身分登入。

1. 使用 [使用 CloudHSM CLI 設定金鑰的屬性](cloudhsm_cli-key-set-attribute.md) 命令將金鑰的 `wrap-with-trusted` 屬性設定為 true。

   ```
   aws-cloudhsm > key set-attribute --filter attr.label=test_key --name wrap-with-trusted --value true
   {
     "error_code": 0,
     "data": {
       "message": "Attribute set successfully"
     }
   }
   ```

## 步驟 2：將可信任金鑰的 `CKA_TRUSTED` 設定為 true
<a name="w2aac15c19c11b9"></a>

若要讓金鑰成為可信任金鑰，其 `CKA_TRUSTED` 屬性必須設定為 true。您可以使用 CloudHSM CLI 或 CloudHSM 管理公用程式 (CMU) 來執行此操作。
+ 如果使用 CloudHSM CLI 設定金鑰的 `CKA_TRUSTED` 屬性，請參閱 [使用 CloudHSM CLI 將金鑰標記為信任](manage-keys-cloudhsm-cli-trusted.md)。
+ 如果使用 CMU 來設定金鑰的 `CKA_TRUSTED` 屬性，請參閱 [如何使用 AWS CloudHSM Management Utility 將金鑰標記為受信任](cloudhsm_using_trusted_keys_control_key_wrap.md)。

## 步驟 3。使用可受信任金鑰來包裝資料金鑰
<a name="w2aac15c19c11c11"></a>

若要使用您在步驟 2 中設定的可信任金鑰來包裝步驟 1 所述的資料金鑰，請參閱下列連結以取得程式碼範例。每個都示範如何包裝金鑰。
+ [AWS CloudHSM PKCS \$111 範例](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/wrapping)
+ [AWS CloudHSM JCE 範例](https://github.com/aws-samples/aws-cloudhsm-jce-examples/tree/sdk5/src/main/java/com/amazonaws/cloudhsm/examples)