選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

硬體安全整合

焦點模式
硬體安全整合 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

注意

此功能適用於 2.5.3 版及更新版本的 Greengrass 核元件。目前 AWS IoT Greengrass 不支援 Windows 核心裝置上的此功能。

您可以透過 PKCS#11 介面設定 AWS IoT Greengrass Core 軟體以使用硬體安全模組 (HSM)。此功能可讓您安全地存放裝置的私有金鑰和憑證,使其不會在軟體中公開或複製。您可以在硬體模組上存放私有金鑰和憑證,例如 HSM 或信任平台模組 (TPM)。

Core AWS IoT Greengrass 軟體使用私有金鑰和 X.509 憑證來驗證 AWS IoT 和 AWS IoT Greengrass 服務的連線。秘密管理員元件會使用此私有金鑰來安全地加密和解密您部署到 Greengrass 核心裝置的秘密。當您將核心裝置設定為使用 HSM 時,這些元件會使用您存放在 HSM 中的私有金鑰和憑證。

Moquette MQTT 代理程式元件也會為其本機 MQTT 伺服器憑證存放私有金鑰。此元件會將私有金鑰存放在元件工作資料夾中的裝置檔案系統上。目前, AWS IoT Greengrass 不支援將此私有金鑰或憑證儲存在 HSM 中。

要求

您必須符合下列需求,才能在 Greengrass 核心裝置上使用 HSM:

  • 核心裝置上已安裝 Greengrass nucleus 2.5.3 版或更新版本。當您在核心裝置上安裝 AWS IoT Greengrass Core 軟體時,可以選擇相容的版本。

  • 核心裝置上安裝的 PKCS#11 提供者元件。您可以在核心裝置上安裝 AWS IoT Greengrass Core 軟體時下載並安裝此元件。

  • 支援具有 RSA-2048 金鑰大小 (或更新版本) 或 ECC 金鑰的 PKCS#1 v1.5 簽章結構和 RSA 金鑰的硬體安全模組。 RSA-2048

    注意

    若要搭配 ECC 金鑰使用硬體安全模組,您必須使用 Greengrass nucleus v2.5.6 或更新版本。

    若要使用硬體安全模組和秘密管理員,您必須使用具有 RSA 金鑰的硬體安全模組。

  • AWS IoT Greengrass 核心軟體可在執行時間 (使用 libdl) 載入的 PKCS#11 提供者程式庫,以叫用 PKCS#11 函數。PKCS#11 提供者程式庫必須實作下列 PKCS#11 API 操作:

    • C_Initialize

    • C_Finalize

    • C_GetSlotList

    • C_GetSlotInfo

    • C_GetTokenInfo

    • C_OpenSession

    • C_GetSessionInfo

    • C_CloseSession

    • C_Login

    • C_Logout

    • C_GetAttributeValue

    • C_FindObjectsInit

    • C_FindObjects

    • C_FindObjectsFinal

    • C_DecryptInit

    • C_Decrypt

    • C_DecryptUpdate

    • C_DecryptFinal

    • C_SignInit

    • C_Sign

    • C_SignUpdate

    • C_SignFinal

    • C_GetMechanismList

    • C_GetMechanismInfo

    • C_GetInfo

    • C_GetFunctionList

  • 硬體模組必須可透過插槽標籤根據 PKCS#11 規格中的定義來解析。

  • 您必須將私有金鑰和憑證存放在相同插槽的 HSM 中,如果 HSM 支援物件 ID,則必須使用相同的物件標籤和物件 IDs。

  • 憑證和私有金鑰必須可由物件標籤解析。

  • 私有金鑰必須具有下列許可:

    • sign

    • decrypt

  • (選用) 若要使用秘密管理員元件,您必須使用 2.1.0 版或更新版本,且私有金鑰必須具有下列許可:

    • unwrap

    • wrap

硬體安全最佳實務

在 Greengrass 核心裝置上設定硬體安全性時,請考慮下列最佳實務。

  • 使用內部硬體隨機號碼產生器,直接在 HSM 產生私有金鑰。這種方法比匯入您在其他地方產生的私有金鑰更安全,因為私有金鑰會保留在 HSM 中。

  • 將私有金鑰設定為不可變,並禁止匯出。

  • 使用 HSM 硬體廠商建議的佈建工具,使用硬體保護的私有金鑰產生憑證簽署請求 (CSR),然後使用 AWS IoT 主控台或 API 來產生用戶端憑證。

注意

當您在 HSM 上產生私有金鑰時,輪換金鑰的安全最佳實務不適用。

安裝具有硬體安全性 AWS IoT Greengrass 的核心軟體

安裝 AWS IoT Greengrass Core 軟體時,您可以將其設定為使用您在 HSM 中產生的私有金鑰。此方法遵循安全最佳實務,在 HSM 中產生私有金鑰,因此私有金鑰會保留在 HSM 中。

若要安裝具有硬體安全性 AWS IoT Greengrass 的核心軟體,請執行下列動作:

  1. 在 HSM 中產生私有金鑰。

  2. 從私有金鑰建立憑證簽署請求 (CSR)。

  3. 從 CSR 建立憑證。您可以建立由其他根憑證授權機構 (CA) 簽署 AWS IoT 的憑證。如需如何使用另一個根 CA 的詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的建立您自己的用戶端憑證

  4. 下載 AWS IoT 憑證並將其匯入 HSM。

  5. 從指定使用 PKCS#11 提供者元件的組態檔案中安裝 AWS IoT Greengrass 核心軟體,以及 HSM 中的私有金鑰和憑證。

您可以選擇下列其中一個安裝選項,以安裝具有硬體安全性 AWS IoT Greengrass 的核心軟體:

目前,當您使用自動資源佈建AWS IoT 機群佈建安裝 時, AWS IoT Greengrass 不支援安裝具有硬體安全性 AWS IoT Greengrass 的核心軟體。

在現有核心裝置上設定硬體安全性

您可以將核心裝置的私有金鑰和憑證匯入 HSM,以設定硬體安全性。

考量事項
  • 您必須具有核心裝置檔案系統的根存取權。

  • 在此程序中,您會關閉 AWS IoT Greengrass Core 軟體,因此核心裝置會在您設定硬體安全性時離線且無法使用。

若要在現有核心裝置上設定硬體安全性,請執行下列動作:

  1. 初始化 HSM。

  2. PKCS#11 提供者元件部署至核心裝置。

  3. 停止 AWS IoT Greengrass 核心軟體。

  4. 將核心裝置的私有金鑰和憑證匯入 HSM。

  5. 更新 AWS IoT Greengrass 核心軟體的組態檔案,以在 HSM 中使用私有金鑰和憑證。

  6. 啟動 AWS IoT Greengrass Core 軟體。

步驟 1:初始化硬體安全模組

完成下列步驟,以初始化核心裝置上的 HSM。

初始化硬體安全模組
  • 在 HSM 中初始化 PKCS#11 字符,並儲存該字符的槽 ID 和使用者 PIN。檢查 HSM 的文件,了解如何初始化權杖。您稍後在部署和設定 PKCS#11 提供者元件時,會使用槽 ID 和使用者 PIN 碼。

步驟 2:部署 PKCS#11 提供者元件

請完成下列步驟,以部署和設定 PKCS#11 提供者元件。您可以將元件部署到一或多個核心裝置。

  1. AWS IoT Greengrass 主控台導覽功能表中,選擇元件

  2. 元件頁面上,選擇公有元件索引標籤,然後選擇 aws.greengrass.crypto.Pkcs11Provider

  3. aws.greengrass.crypto.Pkcs11Provider 頁面中,選擇部署

  4. 新增至部署中,選擇要修改的現有部署,或選擇建立新的部署,然後選擇下一步

  5. 如果您選擇建立新的部署,請選擇部署的目標核心裝置或物件群組。在指定目標頁面的部署目標下,選擇核心裝置或物件群組,然後選擇下一步

  6. 選取元件頁面的公有元件下,選取 aws.greengrass.crypto.Pkcs11Provider,然後選擇下一步

  7. 設定元件頁面上,選取 aws.greengrass.crypto.Pkcs11Provider,然後執行下列動作:

    1. 選擇設定元件

    2. 設定aws.greengrass.crypto.Pkcs11Provider模態、在組態更新下,在要合併的組態中,輸入下列組態更新。使用目標核心裝置的值更新下列組態參數。指定您先前初始化 PKCS#11 字符的槽 ID 和使用者 PIN。您稍後會將私有金鑰和憑證匯入 HSM 中的此插槽。

      name

      PKCS#11 組態的名稱。

      library

      AWS IoT Greengrass 核心軟體可以使用 libdl 載入的 PKCS#11 實作程式庫的絕對檔案路徑。

      slot

      包含私有金鑰和裝置憑證的插槽 ID。此值與槽索引或槽標籤不同。

      userPin

      用來存取插槽的使用者 PIN。

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. 選擇確認以關閉模態,然後選擇下一步

  8. 設定進階設定頁面上,保留預設組態設定,然後選擇 下一步

  9. Review (檢閱) 頁面,選擇 Deploy (部署)

    部署可能需要一分鐘的時間才能完成。

部署 PKCS#11 提供者元件 (主控台)

  1. AWS IoT Greengrass 主控台導覽功能表中,選擇元件

  2. 元件頁面上,選擇公有元件索引標籤,然後選擇 aws.greengrass.crypto.Pkcs11Provider

  3. aws.greengrass.crypto.Pkcs11Provider 頁面中,選擇部署

  4. 新增至部署中,選擇要修改的現有部署,或選擇建立新的部署,然後選擇下一步

  5. 如果您選擇建立新的部署,請選擇部署的目標核心裝置或物件群組。在指定目標頁面的部署目標下,選擇核心裝置或物件群組,然後選擇下一步

  6. 選取元件頁面的公有元件下,選取 aws.greengrass.crypto.Pkcs11Provider,然後選擇下一步

  7. 設定元件頁面上,選取 aws.greengrass.crypto.Pkcs11Provider,然後執行下列動作:

    1. 選擇設定元件

    2. 設定aws.greengrass.crypto.Pkcs11Provider模態、在組態更新下,在要合併的組態中,輸入下列組態更新。使用目標核心裝置的值更新下列組態參數。指定您先前初始化 PKCS#11 字符的槽 ID 和使用者 PIN。您稍後會將私有金鑰和憑證匯入 HSM 中的此插槽。

      name

      PKCS#11 組態的名稱。

      library

      AWS IoT Greengrass 核心軟體可以使用 libdl 載入的 PKCS#11 實作程式庫的絕對檔案路徑。

      slot

      包含私有金鑰和裝置憑證的插槽 ID。此值與槽索引或槽標籤不同。

      userPin

      用來存取插槽的使用者 PIN。

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. 選擇確認以關閉模態,然後選擇下一步

  8. 設定進階設定頁面上,保留預設組態設定,然後選擇 下一步

  9. Review (檢閱) 頁面,選擇 Deploy (部署)

    部署可能需要一分鐘的時間才能完成。

若要部署 PKCS#11 提供者元件,請建立包含在 components 物件aws.greengrass.crypto.Pkcs11Provider中的部署文件,並指定元件的組態更新。請遵循 中的指示建立部署建立新的部署或修改現有的部署。

下列範例部分部署文件指定 部署和設定 PKCS#11 提供者元件。使用目標核心裝置的值更新下列組態參數。儲存插槽 ID 和使用者 PIN 碼,以供稍後將私有金鑰和憑證匯入 HSM 時使用。

name

PKCS#11 組態的名稱。

library

AWS IoT Greengrass 核心軟體可以使用 libdl 載入的 PKCS#11 實作程式庫的絕對檔案路徑。

slot

包含私有金鑰和裝置憑證的插槽 ID。此值與槽索引或槽標籤不同。

userPin

用來存取插槽的使用者 PIN。

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

若要部署 PKCS#11 提供者元件,請建立包含在 components 物件aws.greengrass.crypto.Pkcs11Provider中的部署文件,並指定元件的組態更新。請遵循 中的指示建立部署建立新的部署或修改現有的部署。

下列範例部分部署文件指定 部署和設定 PKCS#11 提供者元件。使用目標核心裝置的值更新下列組態參數。儲存插槽 ID 和使用者 PIN 碼,以供稍後將私有金鑰和憑證匯入 HSM 時使用。

name

PKCS#11 組態的名稱。

library

AWS IoT Greengrass 核心軟體可以使用 libdl 載入的 PKCS#11 實作程式庫的絕對檔案路徑。

slot

包含私有金鑰和裝置憑證的插槽 ID。此值與槽索引或槽標籤不同。

userPin

用來存取插槽的使用者 PIN。

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

可能需要幾分鐘才能完成部署。您可以使用 AWS IoT Greengrass 服務來檢查部署的狀態。您可以檢查 AWS IoT Greengrass 核心軟體日誌,以確認 PKCS#11 供應商元件部署成功。如需詳細資訊,請參閱下列內容:

如果部署失敗,您可以對每個核心裝置上的部署進行故障診斷。如需詳細資訊,請參閱故障診斷 AWS IoT Greengrass V2

步驟 3:更新核心裝置上的組態

Core AWS IoT Greengrass 軟體使用指定裝置運作方式的組態檔案。此組態檔案包含在哪裡尋找裝置用來連線至 的私有金鑰和憑證 AWS 雲端。完成下列步驟,將核心裝置的私有金鑰和憑證匯入 HSM,並更新組態檔案以使用 HSM。

更新核心裝置上的組態以使用硬體安全性
  1. 停止 AWS IoT Greengrass 核心軟體。如果您將 AWS IoT Greengrass Core 軟體設定為系統化的系統服務,您可以執行下列命令來停止軟體。

    sudo systemctl stop greengrass.service
  2. 尋找核心裝置的私有金鑰和憑證檔案。

    • 如果您使用自動佈建機群佈建安裝 AWS IoT Greengrass Core 軟體,私有金鑰存在於 /greengrass/v2/privKey.key,而憑證存在於 /greengrass/v2/thingCert.crt

    • 如果您使用手動佈建安裝 AWS IoT Greengrass Core 軟體,則/greengrass/v2/private.pem.key預設情況下私有金鑰位於 ,且/greengrass/v2/device.pem.crt憑證預設存在於 。

    您也可以在 中檢查 system.privateKeyPathsystem.certificateFilePath 屬性/greengrass/v2/config/effectiveConfig.yaml,以尋找這些檔案的位置。

  3. 將私有金鑰和憑證匯入 HSM。檢查您的 HSM 文件,了解如何將私有金鑰和憑證匯入其中。使用您先前初始化 PKCS#11 字符的槽 ID 和使用者 PIN 來匯入私有金鑰和憑證。您必須為私有金鑰和憑證使用相同的物件標籤和物件 ID。儲存您在匯入每個檔案時指定的物件標籤。您稍後更新 AWS IoT Greengrass 核心軟體組態以使用 HSM 中的私有金鑰和憑證時,會使用此標籤。

  4. 更新 AWS IoT Greengrass 核心組態,以在 HSM 中使用私有金鑰和憑證。若要更新組態,請修改 AWS IoT Greengrass 核心組態檔案,並使用更新的組態檔案執行 AWS IoT Greengrass 核心軟體,以套用新的組態。

    請執行下列操作:

    1. 建立 AWS IoT Greengrass 核心組態檔案的備份。如果您在設定硬體安全性時遇到問題,您可以使用此備份來還原核心裝置。

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. 在文字編輯器中開啟 AWS IoT Greengrass 核心組態檔案。例如,您可以執行下列命令,使用 GNU nano 編輯檔案。/greengrass/v2 將 取代為 Greengrass 根資料夾的路徑。

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. 將 的值取代system.privateKeyPath為 HSM 中私有金鑰的 PKCS#11 URI。將 iotdevicekey 取代為您先前匯入私有金鑰和憑證的物件標籤。

      pkcs11:object=iotdevicekey;type=private
    4. 將 的值取代system.certificateFilePath為 HSM 中憑證的 PKCS#11 URI。將 iotdevicekey 取代為您先前匯入私有金鑰和憑證的物件標籤。

      pkcs11:object=iotdevicekey;type=cert

    完成這些步驟後, AWS IoT Greengrass 核心組態檔案中的 system 屬性看起來應該類似下列範例。

    system: certificateFilePath: "pkcs11:object=iotdevicekey;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey;type=private" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore"
  5. 在更新的effectiveConfig.yaml檔案中套用組態。Greengrass.jar 使用 --init-config 參數執行 ,以在 中套用組態effectiveConfig.yaml/greengrass/v2 將 取代為 Greengrass 根資料夾的路徑。

    sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
  6. 啟動 AWS IoT Greengrass Core 軟體。如果您將 AWS IoT Greengrass Core 軟體設定為具有系統化 的系統服務,您可以執行下列命令來啟動軟體。

    sudo systemctl start greengrass.service

    如需詳細資訊,請參閱執行 AWS IoT Greengrass Core 軟體

  7. 檢查 AWS IoT Greengrass 核心軟體日誌,以確認軟體啟動並連線至 AWS 雲端。Core AWS IoT Greengrass 軟體使用私有金鑰和憑證來連線至 AWS IoT 和 AWS IoT Greengrass 服務。

    sudo tail -f /greengrass/v2/logs/greengrass.log

    下列 INFO 層級日誌訊息表示 AWS IoT Greengrass Core 軟體已成功連線至 AWS IoT 和服務 AWS IoT Greengrass 。

    2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
  8. (選用) 驗證 AWS IoT Greengrass Core 軟體是否可與 HSM 中的私有金鑰和憑證搭配使用後,請從裝置的檔案系統刪除私有金鑰和憑證檔案。執行下列命令,並以私有金鑰和憑證檔案的路徑取代檔案路徑。

    sudo rm /greengrass/v2/privKey.key sudo rm /greengrass/v2/thingCert.crt

在沒有 PKCS#11 支援的情況下使用硬體

PKCS#11 程式庫通常是硬體廠商提供,或是開放原始碼。例如,使用標準相容硬體 (例如 TPM1.2) 時,可以使用現有的開放原始碼軟體。不過,如果您的硬體沒有對應的 PKCS#11 程式庫實作,或者您想要撰寫自訂 PKCS#11 供應商,請聯絡您的 Amazon Web Services Enterprise Support 代表,詢問整合相關問題。

另請參閱

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。