当您需要自行管理并控制密钥材料时,您可以在KMS实例中创建密钥材料来源为外部的密钥,然后导入您自己的密钥材料。本文介绍如何为对称密钥导入密钥材料。
背景信息
密钥是KMS的基本资源,由密钥ID、基本元数据(如密钥状态等)以及密钥材料组成。创建密钥时,您可以选择由KMS生成密钥材料,也可以选择外部来源的密钥材料。如果选择了外部来源的密钥材料,您需要将外部密钥材料导入到密钥中。
不同KMS密钥管理类型对导入密钥材料的支持情况,请参见下表。关于密钥管理类型的更多信息,请参见密钥管理类型和密钥规格。
:表示支持导入相应的密钥材料。
:表示不支持导入相应的密钥材料。
密钥管理类型 | 导入对称密钥材料 | 导入非对称密钥材料 |
默认密钥 |
|
|
软件密钥 | ||
硬件密钥 |
注意事项
请确保使用了符合要求的随机数发生器生成密钥材料。
为密钥首次导入密钥材料后,密钥即和该密钥材料绑定,不再支持导入其他密钥材料。
如果密钥的密钥材料过期或被删除,您可以为密钥再次导入相同的密钥材料,使得该密钥再次可用,导入密钥材料后不支持导出,因此请您妥善保管密钥材料。
前提条件
已购买和启用KMS硬件密钥管理实例。具体操作,请参见购买和启用KMS实例。
为默认密钥(主密钥)导入密钥材料时,无需购买KMS实例。
步骤一:创建密钥材料来源为外部的对称密钥
默认密钥(主密钥)
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
单击默认密钥页签,单击主密钥操作列的启用,在创建密钥页签完成配置项设置,然后单击确定。
配置项
说明
密钥别名
密钥的标识符。支持英文字母、数字、下划线(_)、短划线(-)和正斜线(/)。
描述信息
密钥的说明信息。
高级选项
密钥材料来源。选择外部。
说明请仔细阅读并选中我了解使用外部密钥材料的方法和意义。
硬件密钥
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击 。
在用户主密钥页签,实例ID选择硬件密钥管理实例,单击创建密钥。
在创建密钥面板,完成配置项设置,然后单击确定。
配置项
说明
密钥类型
选择对称密钥。
重要如果您创建的密钥用于加密凭据值,请选择对称密钥。
密钥规格
对称密钥规格:Aliyun_AES_256、Aliyun_AES_192、Aliyun_AES_128、
密钥用途
密钥的用途。取值:
Encrypt/Decrypt:数据加密和解密。
Sign/Verify:产生和验证数字签名。
密钥别名
密钥的别名标识符。支持英文字母、数字、下划线(_)、短划线(-)和正斜线(/)。
标签
密钥的标签,方便您对密钥进行分类管理。每个标签由一个键值对(Key:Value)组成,包含标签键(Key)、标签值(Value)。
说明标签建和标签值的格式:最多支持128个字符,可以包含英文大小写字母、数字、正斜线(/)、反斜线(\)、下划线(_)、短划线(-)、半角句号(.)、加号(+)、等于号(=)、半角冒号(:)、字符at(@)。
标签键不能以aliyun或acs:开头。
每个密钥最多可以设置20个标签键值对。
描述信息
密钥的说明信息。
高级选项
密钥材料来源。选择外部。
说明请仔细阅读并选中我了解使用外部密钥材料的方法和意义。
步骤二:下载公钥和导入令牌
导入密钥材料的参数包含公钥和导入令牌,公钥用于加密密钥材料,导入令牌用于导入密钥材料。
定位到目标密钥,单击操作列的详情,在密钥材料区域,单击获取导入参数。
在获取导入密钥材料的参数对话框,选择公钥类型和加密算法,单击下一步。
公钥类型
加密算法
RSA_2048
RSAES_OAEP_SHA_256(推荐)
RSAES_PKCS1_V1_5
重要美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)关于密码算法和密钥长度的使用指导规范Transitioning the Use of Cryptographic Algorithms and Key Lengths中已明确表示2023年12月31日后应停止使用该加密算法用于加密传输密钥。
下载公钥以及导入令牌,并妥善保存。
公钥格式:
der格式:下载后文件名默认为publickey_key-******.bin。
pem格式:下载后文件名默认为publickey_key-******.pem。
导入令牌:下载后文件名默认为token_key-******.txt。
重要导入令牌的有效期为24小时,在有效期内可以重复使用,失效以后需要获取新的导入令牌和公钥。
步骤三:加密密钥材料
使用步骤二:下载公钥和导入令牌下载的公钥加密密钥材料。
下面以使用OpenSSL生成密钥材料,并通过RSA公钥、RSAES_OAEP_SHA_256算法加密密钥材料为例。
使用OpenSSL产生一个32字节的随机数,生成一个密钥材料。 如果您已有密钥材料,请跳过本步骤。
openssl rand -out KeyMaterial.bin 32
根据指定的加密算法加密密钥材料。
openssl pkeyutl -encrypt -in KeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -out EncryptedKeyMaterial.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -pkeyopt rsa_mgf1_md:sha256
说明示例代码中加密算法使用RSAES_OAEP_SHA_256。
示例代码以公钥格式为der格式为例,如果您下载公钥文件时选择了pem格式,需要将示例代码中的
-keyform DER
替换为-keyform PEM
。请将PublicKey.bin替换为步骤二:下载公钥和导入令牌中下载的公钥文件名称。
将加密后的密钥材料进行Base64编码,保存为文本文件。
openssl enc -e -base64 -A -in EncryptedKeyMaterial.bin -out EncryptedKeyMaterial_base64.txt
说明EncryptedKeyMaterial_base64.txt即为可导入KMS的密钥材料文件。
步骤四:导入密钥材料
在密钥详情页面,单击导入密钥材料,在导入打包后的密钥材料对话框,完成各项配置后,单击确定。
配置项 | 说明 |
打包后的密钥材料 | 上传步骤三:加密密钥材料中生成的密钥材料文件。 |
导入令牌 | 上传步骤二:下载公钥和导入令牌中下载的令牌文件。 |
密钥材料过期时间 | 仅默认密钥(主密钥)支持设置。 支持选择永不过期,也可以自定义过期时间。 重要 如果设置了密钥材料过期时间,在设置的时间点之后KMS会删除已过期的密钥材料,您将无法使用该密钥材料。如需恢复使用,可以为密钥再次导入相同的密钥材料。 |
导入密钥材料成功后,密钥状态从待导入更新为启用中。
常见问题
如何重新导入相同的密钥材料?
密钥材料过期后,您需要再次导入相同的密钥材料,密钥才可继续使用。
删除过期的密钥材料。
在密钥详情页,单击密钥材料页签,单击删除密钥材料。
下载公钥和导入令牌。具体操作,请参见步骤二:下载公钥和导入令牌。
使用公钥加密密钥材料。具体操作,请参见步骤三:加密密钥材料。
说明密钥材料必须与之前过期的密钥材料为同一个。
使用导入令牌,导入加密后的密钥材料。具体操作,请参见步骤四:导入密钥材料。
是否支持删除密钥材料?
导入的密钥材料过期或者被删除后,其密钥将无法使用,需要再次导入相同的密钥材料才可正常使用。
密钥管理类型 | 密钥材料删除方式 |
默认密钥(主密钥) |
|
硬件密钥 | 由于密钥材料导入到密码机集群中,因此不支持删除密钥材料,仅当您计划删除密钥时,随密钥一同删除。 警告 密钥删除后将无法恢复,使用该密钥加密的内容及产生的数据密钥也将无法解密。因此建议您先禁用密钥,确认不再使用后再计划删除密钥。关于如何禁用密钥,请参见禁用密钥。 计划删除密钥的操作,请参见计划删除密钥或ScheduleKeyDeletion。 |
如何判断密钥材料是由外部导入还是由KMS生成?
方式一:在密钥管理服务控制台查看。
默认密钥:在密钥管理页面,单击默认密钥页签,定位到目标密钥,单击操作列的详情,在详情页面查看密钥材料来源。
硬件密钥:在密钥管理页面,单击用户主密钥页签,选择实例ID后定位到目标密钥,单击操作列的详情,在详情页面查看密钥材料来源。
方式二:通过调用DescribeKey接口查看。
如果Origin值为EXTERNAL,说明密钥材料由外部导入。如果Origin值为Aliyun_KMS,说明密钥材料由KMS生成。
如何轮转使用外部密钥材料的密钥?
对外部导入密钥材料的密钥,KMS不提供定期自动轮转功能。如果您需要轮转,只能创建一个新的密钥然后导入新的密钥材料。