本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用信任平台模組 (TPM) 保護 AWS IoT Greengrass Nucleus Lite
本教學課程說明如何啟用和設定對 AWS IoT Greengrass nucleus lite 的信任平台模組 (TPM) 支援。TPM 為安全金鑰儲存提供硬體型信任根。此安全功能可保護密碼編譯操作和敏感登入資料,增強裝置的安全性和完整性。
當您完成此整合時,您的 AWS IoT Greengrass 核心裝置將使用 TPM 保護的私有金鑰來進行身分和 AWS IoT 與服務的通訊。
如需 AWS IoT Greengrass 裝置安全性的詳細資訊,請參閱 中的安全性 AWS IoT Greengrass。
重要
只有使用手動資源佈建安裝 AWS IoT Greengrass nucleus lite 時,才支援此機制。
先決條件
為了完成本教學,您需要以下項目:
-
具有 TPM 2.0 硬體或 NitroTPM 的 Linux 相容裝置
-
安裝 Greengrass Nucleus Lite 的開發人員機器。如需詳細資訊,請參閱安裝 AWS IoT Greengrass 核心軟體 (主控台)。
-
本教學中的指示是針對 Ubuntu 24.04 LTS 定義。
-
任何可支援 Linux TPM2 軟體堆疊的 Linux
發行版本都可以支援此機制。 -
安裝AWS CLI並設定 的開發人員機器具有以下許可:
-
建立和管理 AWS IoT 資源
-
建立和管理 IAM 角色和政策
-
-
裝置上的根或 sudo 權限。
本教學課程包含如何使用 TPM2 晶片做為硬體安全模組 (HSM) 來建立私有金鑰和用於建立 AWS IoT 物件憑證的 CSR 的說明。
步驟 1:設定 NitroTPM 執行個體
-
設定 NitroTPM 執行個體。如需詳細資訊,請參閱 NitroTPM。
-
使用上一個步驟中建立的自訂 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-protected私有金鑰來產生憑證簽署請求 (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 支援,請進行下列變更:
-
透過將使用者新增至
tss群組以進行 TPM 存取來設定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-enabled 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。