本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在客户端和 AWS CloudHSM (推荐)TLS之间设置互动
以下主题描述了在客户端和之间启用双向 TLS (mTLS) 功能必须完成的步骤 AWS CloudHSM。目前,此功能仅在 hsm2m.medium 上提供。有关HSM类型的更多信息,请参阅AWS CloudHSM 集群模式。
第 1 步。创建信任锚并将其注册到 HSM
在启用 m HSM 之前,必须创建信任锚并将其注册到上TLS。这是一个分为两个步骤的过程:
创建私钥和自签名根证书
注意
对于生产集群,您将要创建的密钥应使用可信的随机掩码以安全的方式创建。我们建议您使用安全的异地和离线模式HSM或等效方式。安全地存储密钥。
对于开发和测试,您可以使用任何便捷的工具(例如 OpenSSL)来创建密钥并对根证书进行自签名。您需要密钥和根证书才能在启用 m 中对客户端证书TLS进行签名 AWS CloudHSM。
以下示例说明如何使用 Ope n SSL
例 — 使用 Open 创建私钥 SSL
使用以下命令创建使用 -256 算法加密的 4096 位RSA密钥。AES要使用此示例,请替换 <mtls_ca_root_1.key>
使用您要存储密钥的文件的名称。
$
openssl genrsa -out
<mtls_ca_root_1.key>
-aes256 4096Generating RSA private key, 4096 bit long modulus .....................................+++ .+++ e is 65537 (0x10001) Enter pass phrase for mtls_ca_root_1.key: Verifying - Enter pass phrase for mtls_ca_root_1.key:
例 — 使用 Open 创建自签名根证书 SSL
使用以下命令创建自签名根证书,该证书以您刚刚创建mtls_ca_root_1.crt
的私钥命名。该证书的有效期为 25 年(9130 天)。阅读屏幕上的说明,并按照提示操作。
$
openssl req -new -x509 -days 9130 -key mtls_ca_root_1.key -out mtls_ca_root_1.crt
Enter pass phrase for mtls_ca_root_1.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
将信任锚注册到 HSM
创建自签名根证书后,管理员必须将其注册为 AWS CloudHSM 集群的信任锚点。
要向注册信任锚点 HSM
-
使用以下命令启动 Cloud HSMCLI:
-
使用 Cloud HSMCLI,以管理员身份登录。
aws-cloudhsm >
login --username admin --role admin
Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } } -
使用 在 Cloud 上注册信任锚点 HSM CLI 命令注册信任锚。有关更多信息,请参阅以下示例或使用 help cluster mtls register-trust-anchor 命令。
例 — 向集 AWS CloudHSM 群注册信任锚点
以下示例说明如何在 Cloud 中使用cluster mtls register-trust-anchor命令将信任锚注册HSMCLI到HSM。要使用此命令,管理员必须登录到HSM。将这些值替换为您自己的值:
aws-cloudhsm >
cluster mtls register-trust-anchor --path
</path/mtls_ca_root_1.crt>
{ "error_code": 0, "data": { "trust_anchor": { "certificate-reference": "0x01", "certificate": "
<PEM Encoded Certificate>
", "cluster-coverage": "full" } } }
注意
AWS CloudHSM 支持将中间证书注册为信任锚。在这种情况下,需要将整个经PEM编码的证书链文件注册到上HSM,证书按层次顺序排列。
AWS CloudHSM 支持带有 2048 位RSA密钥的长度为 4 的证书链、带有 3072 位密钥的长度为 3 的证书链、带有 4096 位RSA密钥的长度为 3 的证书链以及带有 EC RSA 密钥的长度为 6 的证书链。
成功注册信任锚后,您可以运行cluster mtls list-trust-anchors命令来检查当前注册的信任锚,如下所示:
aws-cloudhsm >
cluster mtls list-trust-anchors
{ "error_code": 0, "data": { "trust_anchors": [ { "certificate-reference": "0x01", "certificate": "
<PEM Encoded Certificate>
", "cluster-coverage": "full" } ] } }
注意
可以在 hsm2m.medium 上注册的信任锚的最大数量为两 (2) 个。
第 2 步。启TLS用 m AWS CloudHSM
要启用 m TLS AWS CloudHSM,您需要创建私钥和由我们在创建中生成的根证书签名的客户端证书,并在上注册信任锚点 HSM,然后使用任何 Client SDK 5 配置工具来设置私钥路径和客户端证书链路径。
创建私钥和客户端证书链
例 — 使用 Open 创建私钥 SSL
使用以下命令创建使用 -256 算法加密的 4096 位RSA密钥。AES要使用此示例,请替换 <ssl-client.key>
使用您要存储密钥的文件的名称。
$
openssl genrsa -out
<ssl-client.key>
-aes256 4096Generating RSA private key, 4096 bit long modulus .....................................+++ .+++ e is 65537 (0x10001) Enter pass phrase for ssl-client.key: Verifying - Enter pass phrase for ssl-client.key:
例 — 使用 Open 生成证书签名请求 (CSR) SSL
使用以下命令根据您刚刚创建的私钥生成证书签名请求 (CSR)。阅读屏幕上的说明,并按照提示操作。
$
openssl req -new -key
<ssl-client.key>
-out<ssl-client.csr>
Enter pass phrase for ssl-client.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
例 — CSR 使用根证书签名
使用以下命令CSR使用我们在创建中创建和注册的根证书签名,并在上注册信任锚HSM并创建名为的客户端证书ssl-client.crt
。该证书的有效期为 5 年(1826 天)。
$
openssl x509 -req -days 1826 -in
<ssl-client.csr>
-CA<mtls_ca_root_1.crt>
-CAkey<mtls_ca_root_1.key>
-CAcreateserial -out<ssl-client.crt>
例 — 创建客户证书链
使用以下命令合并我们在创建中创建和注册的客户端证书和根证书,并在上注册信任锚点,HSM然后创建一个名为的客户端证书链ssl-client.pem
,该证书链将在下一步中用于配置。
$
cat
<ssl-client.crt>
<mtls_ca_root_1.crt>
><ssl-client.pem>
注意
如果您在 C reate 中注册了中间证书,并将信任锚注册到HSM作为信任锚上,请确保将客户端证书与整个证书链结合起来以创建客户端证书链。
TLS为客户端 SDK 5 配置 m
使用任何 Client SDK 5 配置工具,TLS通过提供正确的客户端密钥路径和客户端证书链路径来启用双向。有关客户端 SDK 5 配置工具的更多信息,请参阅AWS CloudHSM 客户端 SDK 5 配置工具。
第 3 步。将 m TLS 强制执行设置为 AWS CloudHSM
使用任何 Client SDK 5 配置工具进行配置后,集群TLS中客户端和客户端之间的连接 AWS CloudHSM 将是相互的。但是,从配置文件中删除私钥路径和客户端证书链路径将使连接TLS再次变为常规连接。通过完成以下步骤 HSMCLI,您可以使用 Cloud 在集群中设置 mtls 强制执行:
-
使用以下命令启动 Cloud HSMCLI:
-
使用 Cloud HSMCLI,以管理员身份登录。
aws-cloudhsm >
login --username admin --role admin
Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } }注意
1. 确保您已配置云HSMCLI并在 m TLS 连接HSMCLI下启动云。
2. 在设置TLS强制执行之前,你必须以默认管理员用户身份登录,用户名为管理员。
-
使用 使用 Cloud 设置 m TLS 强制等级 HSM CLI 命令来设置强制执行。有关更多信息,请参阅以下示例或使用 help cluster mtls set-enforcement 命令。
例 — 使用集 AWS CloudHSM 群设置 m TLS 强制执行
以下示例说明如何在 Cloud 中使用cluster mtls set-enforcement命令HSMCLI来设置 m TLS 强制执行HSM。要使用此命令,用户名为管理员的管理员必须登录到HSM。
aws-cloudhsm >
cluster mtls set-enforcement --level cluster
{ "error_code": 0, "data": { "message": "Mtls enforcement level set to Cluster successfully" } }
警告
在集群中强制TLS使用 m 后,所有现有的非 m TLS 连接都将被丢弃,并且您只能使用 m 个TLS证书连接到集群。