本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用可信平台模 AWS IoT 块 (TPM) 保护 Greengrass Nucleus Lite
本教程介绍如何启用和配置 nu AWS IoT Greengrass cleus lite 的可信平台模块 (TPM) 支持。TPM 为安全密钥存储提供基于硬件的信任根。此安全功能可保护加密操作和敏感凭证,从而增强设备的安全性和完整性。
完成此集成后,您的 AWS IoT Greengrass 核心设备将使用受 TPM 保护的私钥进行身份识别和与服务的通信。 AWS IoT
有关 AWS IoT Greengrass 设备安全的更多信息,请参阅AWS IoT Greengrass 中的安全性。
重要
只有通过手动资源配置安装 n AWS IoT Greengrass ucleus lite 时,才支持此机制。
先决条件
要完成本教程,您需要:
-
一台安装了 Greengrass Nucleus Lite 的开发者机器。有关更多信息,请参阅安装 AWS IoT Greengrass 核心软件(控制台)。
-
本教程中的说明是针对 Ubuntu 24.04 LTS 制定的。
-
任何支持 Linux TPM2 软件堆栈的 Linux
发行版都可以支持这种机制。 -
一台开发者计算机,安装了 AWS CLI 并配置了以下权限:
-
创建和管理 AWS IoT 资源
-
创建和管理 IAM 角色和策略
-
-
设备上的 root 或 sudo 权限。
本教程包含有关如何使用 TPM2 芯片作为硬件安全模块 (HSM) 来创建私钥和用于创建 AWS IoT 事物证书的 CSR 的说明。
第 1 步:设置 NitroTPM 实例
-
设置一个 NitrotPM 实例。有关更多信息,请参阅 nitroT PM。
-
使用在上一步中创建的自定义 AMI 启动最终实例。
重要
使用 SSH 连接时,请使用
ubuntu用户代替root。 -
运行以下命令,检查 TPM 设备是否存在且工作正常:
ls -la /dev/tpm*你应该看到
/dev/tpm0和/dev/tpmrm0设备。
第 2 步:安装和配置 TPM 工具
-
通过运行以下命令安装所需的软件包:
sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0 -
运行以下命令验证 TPM 设备的权限:
ls -l /dev/tpm0 # Should be owned by tss:root with permissions 0660 ls -l /dev/tpmrm0 # Should be owned by tss:tss with permissions 0660
第 3 步:配置 OpenSSL TPM2 提供程序
-
编辑 OpenSSL 配置文件:
sudo vi /etc/ssl/openssl.cnf -
添加以下配置:
[openssl_init] providers = provider_sect [provider_sect] default = default_sect tpm2 = tpm2_sect [default_sect] activate = 1 [tpm2_sect] identity = tpm2 module = /usr/local/lib64/tpm2.so activate = 1 -
根据需要调整模块路径。你可以使用以下方法找到正确的路径:
find /usr -name "tpm2.so"
步骤 4:生成永久性 TPM 密钥
-
通过运行以下命令创建主键:
sudo tpm2_createprimary -C o -c primary.ctx -
通过运行以下命令创建 ECC 密钥对象:
sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub -
通过运行以下命令加载密钥:
sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx -
通过运行以下命令使密钥永久化:
sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002这将创建一个带有手柄的永久密钥(比如
0x81000002)。
步骤 5:生成证书签名请求 (CSR)
在此步骤中,您将使用 TPM2受保护的私钥生成证书签名请求 (CSR)。
-
使用 TPM 密钥生成 CSR:
openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing" -
0x81000002替换为你选择的手柄值和TPMThing你想要的事物名称。
步骤 6:从 CSR 创建证书
-
在您的开发计算机上,创建一个文件夹,用于下载该 AWS IoT 事物的证书。
mkdir greengrass-v2-certs -
使用 CSR 文件创建 AWS IoT 事物的证书并将其下载到您的开发计算机。
aws iot create-certificate-from-csr \ --set-as-active \ --certificate-signing-request file://path_to_device.csr\ --certificate-pem-outfile greengrass-v2-certs/device.pem.crt如果请求成功,将返回与以下示例类似的响应:
{ "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----" }
第 7 步:设置支持 TPM 的 Greengrass Nucleus Lite
要在 Greengrass Nucleus Lite 中启用 TPM 支持,请进行以下更改:
-
通过将用户添加到 TPM 访问
tss群组来配置ggcore用户权限:sudo usermod -a -G tss ggcore -
完成以下步骤以更新凭证目录:
-
从凭证目录中删除私钥文件。
-
由于我们使用的是永久性 TPM 密钥,因此无需复制私钥文件。
-
-
将新的证书复制
device.pem.crt到该凭据目录中。
-
-
config.yaml使用以下 TPM 特定的配置进行编辑:system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ... -
运行以下命令重启你的 Greengrass Nucleus Lite:
systemctl restart greengrass-lite.target
故障排查
如果您在设置或操作 TPM2启用该功能的 AWS IoT Greengrass 设备时遇到问题,请尝试以下故障排除步骤:
找不到 TPM 设备(使用 NitrotPM 时)
如果/dev/tpm0不存在,请执行以下步骤:
-
确认您使用的是受 NitrotPM 支持的实例类型。
-
确保 AMI 是用创建的
--tpm-support v2.0。 -
确认该实例是从自定义 AMI 启动的。
权限被拒绝错误
如果您遇到 TPM 访问错误,请执行以下操作:
-
验证用户是否在
tss群组中:groups $USER。 -
使用以下命令检查 TPM 设备的权限:
ls -l /dev/tpm* -
加入
tss群组后,请确认您已注销并重新登录。
OpenSSL 提供程序问题
如果找不到 TPM 提供商,请执行以下操作:
-
验证中的
tpm2.so路径/etc/ssl/openssl.cnf。 -
运行以下命令检查提供商安装情况:
openssl list -providers -
验证
tpm2-openssl软件包是否已正确安装。
后续步骤
现在,您已成功将 AWS IoT Greengrass 核心设备与集成 TPM2,您可以:
-
将组件部署到您的安全 AWS IoT Greengrass 设备
-
通过 TPM2 集成设置其他 AWS IoT Greengrass 设备
有关 AWS IoT Greengrass 设备安全的更多信息,请参阅AWS IoT Greengrass 中的安全性。