

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

# 第 1 步：创建 AWS KMS key 不带密钥的材料
<a name="importing-keys-create-cmk"></a>

默认情况下，在 AWS KMS 创建 KMS 密钥时会为您创建密钥材料。要改为导入自己的密钥材料，请先创建不带密钥材料的 KMS 密钥。然后导入密钥材料。要创建不带密钥材料的 KMS 密钥，请使用 AWS KMS 控制台或[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作。

要创建不具有密钥材料的密钥，请指定 `EXTERNAL` 的[源](create-keys.md#key-origin)。KMS 密钥的源属性是不可变的。创建密钥后，您就无法将为导入的密钥材料设计的 KMS 密钥转换为包含来自 AWS KMS 或任何其他来源的密钥材料的 KMS 密钥。

带 `EXTERNAL` 且无密钥材料的 KMS 密钥的[密钥状态](key-state.md)为 `PendingImport`。KMS 密钥可以无限保留在 `PendingImport` 状态。但是，您不能在加密操作中使用处于 `PendingImport` 状态的 KMS 密钥。导入密钥材料时，KMS 密钥的密钥状态会更改为 `Enabled`，您可以在加密操作中使用该密钥。

AWS KMS 在[创建 KMS 密钥、下载公钥](ct-createkey.md)[和导入令牌以及导入密钥](ct-getparametersforimport.md)[材料时，会在 AWS CloudTrail 日志中](ct-importkeymaterial.md)记录事件。 AWS KMS 还会在您[删除导入的密钥材料或 AWS KMS 删除](ct-deleteimportedkeymaterial.md)[过期的密钥材料](ct-deleteexpiredkeymaterial.md)时记录 CloudTrail 事件。

**Topics**
+ [创建不带密钥材料的 KMS 密钥（控制台）](#importing-keys-create-cmk-console)
+ [创建不含密钥材料的 KMS 密钥 (AWS KMS API)](#importing-keys-create-cmk-api)

## 创建不带密钥材料的 KMS 密钥（控制台）
<a name="importing-keys-create-cmk-console"></a>

您只需为导入的密钥材料创建一次 KMS 密钥。您可以根据需要多次将相同的密钥材料导入和重新导入到现有的 KMS 密钥中，但不能将不同的密钥材料导入一个 KMS 密钥。有关更多信息，请参阅 [步骤 2：下载包装公有密钥和导入令牌](importing-keys-get-public-key-and-token.md)。

要在您的 **客户管理型密钥** 表中查找带有导入的密钥材料的现有 KMS 密钥，请使用右上角的齿轮图标显示 KMS 密钥列表中的 **Origin**（源）列。导入的密钥的**源**值为**外部（导入密钥材料）**。

要使用导入的密钥材料创建 KMS 密钥，请首先按照[创建首选密钥类型的 KMS 密钥的说明](create-keys.md)操作，但以下情况除外。

选择密钥用法后，请执行以下操作：

1. 展开 **Advanced options (高级选项)**。

1. 对于 **Key material origin**（密钥材料源），请选择 **External (Import key material)** [外部（导入密钥材料）]。

1. 选择**我了解使用导入密钥的安全性和持久性影响**旁边的复选框，表示您了解使用导入密钥材料的影响。要了解这些含义，请参阅[保护导入的密钥材料](import-keys-protect.md)。

1. 可选：要使用导入的密钥材料创建[多区域 KMS 密钥](multi-region-keys-overview.md)，请在**区域性**下选择**多区域密钥**。

1. 返回基本说明。对于该类型的所有 KMS 密钥，基本过程的其余步骤都相同。

选择**完成**时，您创建了一个 KMS 密钥，该密钥没有密钥材料，状态（[密钥状态](key-state.md)）为**待导入**。

但是，控制台不会返回到**客户托管密钥**表，而是显示一个页面，您可以在其中下载导入密钥材料所需的公有密钥和导入令牌。现在，您可以立即继续下载步骤，也可以选择**取消**停止下载。您可以随时返回此下载步骤。

下一步: [步骤 2：下载包装公有密钥和导入令牌](importing-keys-get-public-key-and-token.md)。

## 创建不含密钥材料的 KMS 密钥 (AWS KMS API)
<a name="importing-keys-create-cmk-api"></a>

要使用 [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) 创建不含密钥材料的对称加密 KMS 密钥，请发送`Origin`参数设置为`EXTERNAL`的[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)请求。以下示例说明如何使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) 执行该操作。

```
$ aws kms create-key --origin EXTERNAL
```

该命令成功执行后，您会看到类似以下内容的输出。 AWS KMS 关键`Origin`是`EXTERNAL`，现在`KeyState`是`PendingImport`。

**提示**  
如果命令不成功，则可能会看到 `KMSInvalidStateException` 或 `NotFoundException`。您可以重试请求。

```
{
    "KeyMetadata": {
        "Origin": "EXTERNAL",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Description": "",
        "Enabled": false,
        "MultiRegion": false,
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "PendingImport",
        "CreationDate": 1568289600.0,
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "AWSAccountId": "111122223333",
        "KeyManager": "CUSTOMER",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ]
    }
}
```

从命令输出中复制 `KeyId` 值，以供后面的步骤使用，然后继续 [步骤 2：下载包装公有密钥和导入令牌](importing-keys-get-public-key-and-token.md)。

**注意**  
此命令创建对称加密 KMS 密钥，其 `KeySpec` 为 `SYMMETRIC_DEFAULT`，`KeyUsage` 为 `ENCRYPT_DECRYPT`。您可以使用可选参数 `--key-spec` 和 `--key-usage` 来创建非对称或 HMAC KMS 密钥。有关更多信息，请参阅 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作。