

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

# 中的資料保護 AWS IoT Greengrass
<a name="data-protection"></a>

 AWS [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 中的資料保護 AWS IoT Greengrass。如此模型所述， AWS 負責保護執行所有 的全域基礎設施 AWS 雲端。您負責維護在此基礎設施上託管內容的控制權。您也同時負責所使用 AWS 服務 的安全組態和管理任務。如需資料隱私權的詳細資訊，請參閱[資料隱私權常見問答集](https://aws.amazon.com/compliance/data-privacy-faq/)。如需有關歐洲資料保護的相關資訊，請參閱*AWS 安全性部落格*上的[AWS 共同責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，建議您保護 AWS 帳戶 登入資料，並使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 設定個別使用者。如此一來，每個使用者都只會獲得授與完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與 AWS 資源通訊。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 使用 設定 API 和使用者活動記錄 AWS CloudTrail。如需有關使用 CloudTrail 追蹤擷取 AWS 活動的資訊，請參閱*AWS CloudTrail 《 使用者指南*》中的[使用 CloudTrail 追蹤](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解決方案，以及其中的所有預設安全控制 AWS 服務。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Amazon S3 的敏感資料。
+ 如果您在 AWS 透過命令列界面或 API 存取 時需要 FIPS 140-3 驗證的密碼編譯模組，請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊，放在標籤或自由格式的文字欄位中，例如**名稱**欄位。這包括當您使用 AWS IoT Greengrass 或使用主控台、API AWS CLI或其他 AWS 服務 AWS SDKs 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 URL，我們強烈建議請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。

如需在 中保護敏感資訊的詳細資訊 AWS IoT Greengrass，請參閱 [請勿記錄敏感資訊](security-best-practices.md#protect-pii)。

如需關於資料保護的詳細資訊，請參閱 *AWS 安全部落格*上的 [AWS 共同責任模型和歐盟《一般資料保護規範》(GDPR)](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

**Topics**
+ [資料加密](data-encryption.md)
+ [硬體安全整合](hardware-security.md)

# 資料加密
<a name="data-encryption"></a>

AWS IoT Greengrass 使用加密來保護傳輸中 （透過網際網路或本機網路） 和靜態 （存放在 中） 的資料 AWS 雲端。

 AWS IoT Greengrass 環境中的裝置通常會收集傳送至 AWS 服務的資料，以供進一步處理。如需其他服務資料加密的詳細資訊 AWS ，請參閱該服務的安全文件。

**Topics**
+ [傳輸中加密](encryption-in-transit.md)
+ [靜態加密](encryption-at-rest.md)
+ [Greengrass 核心裝置的金鑰管理](key-management.md)

# 傳輸中加密
<a name="encryption-in-transit"></a>

AWS IoT Greengrass 有兩種通訊模式，其中資料正在傳輸中：
+ [透過網際網路傳輸資料](#data-in-transit-internet)。 Greengrass 核心與 AWS IoT Greengrass 網際網路之間的通訊會加密。
+ [核心裝置上的資料](#data-in-transit-locally)。 Greengrass 核心裝置上的元件之間的通訊不會加密。

## 透過網際網路傳輸資料
<a name="data-in-transit-internet"></a>

AWS IoT Greengrass 使用 Transport Layer Security (TLS) 來加密網際網路上的所有通訊。傳送到 的所有資料 AWS 雲端 都會使用 MQTT 或 HTTPS 通訊協定，透過 TLS 連線傳送，因此預設為安全。 AWS IoT Greengrass 會使用 AWS IoT 傳輸安全模型。如需詳細資訊，請參閱《 *AWS IoT Core 開發人員指南*》中的[傳輸安全性](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html)。

## 核心裝置上的資料
<a name="data-in-transit-locally"></a>

AWS IoT Greengrass 不會加密在 Greengrass 核心裝置上本機交換的資料，因為資料不會離開裝置。這包括使用者定義元件、 AWS IoT 裝置 SDK 和公有元件之間的通訊，例如串流管理員。

# 靜態加密
<a name="encryption-at-rest"></a>

AWS IoT Greengrass 會儲存您的資料：
+ [中的靜態資料 AWS 雲端](#data-at-rest-cloud)。 此資料已加密。
+ [Greengrass 核心上的靜態資料](#data-at-rest-device)。 此資料不會加密 （您秘密的本機複本除外）。

## 中的靜態資料 AWS 雲端
<a name="data-at-rest-cloud"></a>

AWS IoT Greengrass 會加密存放在 中的客戶資料 AWS 雲端。此資料使用 AWS KMS 管理的金鑰進行保護 AWS IoT Greengrass。

## Greengrass 核心上的靜態資料
<a name="data-at-rest-device"></a>

AWS IoT Greengrass 依賴 Unix 檔案許可和全磁碟加密 （如果啟用） 來保護核心上的靜態資料。保護檔案系統和裝置是您的責任。

不過， AWS IoT Greengrass 會加密擷取自 之秘密的本機複本 AWS Secrets Manager。如需詳細資訊，請參閱[秘密管理員](secret-manager-component.md)元件。

# Greengrass 核心裝置的金鑰管理
<a name="key-management"></a>

客戶有責任保證在 Greengrass 核心裝置上安全儲存密碼編譯 （公有和私有） 金鑰。 AWS IoT Greengrass 將公有和私有金鑰用於下列案例：
+ IoT 用戶端金鑰會搭配 IoT 憑證在 Greengrass 核心連接至 AWS IoT Core時，驗證 Transport Layer Security (TLS) 交握。如需詳細資訊，請參閱[的裝置身分驗證和授權 AWS IoT Greengrass](device-auth.md)。
**注意**  
金鑰和憑證也稱為核心私有金鑰和核心裝置憑證。

Greengrass 核心裝置支援使用檔案系統許可或[硬體安全模組的](hardware-security.md)私有金鑰儲存。如果您使用以檔案系統為基礎的私有金鑰，您必須負責將其安全儲存於核心裝置上。

# 硬體安全整合
<a name="hardware-security"></a>

**注意**  
此功能適用於 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.5.3 和更新版本。目前 AWS IoT Greengrass 不支援 Windows 核心裝置上的此功能。

您可以將 AWS IoT Greengrass Core 軟體設定為透過 [PKCS\$111 介面](https://en.wikipedia.org/wiki/PKCS_11)使用硬體安全模組 (HSM)。此功能可讓您安全地存放裝置的私有金鑰和憑證，使其不會在軟體中公開或複製。您可以將私有金鑰和憑證存放在硬體模組上，例如 HSM 或信任平台模組 (TPM)。

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

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

**提示**  
在 [AWS 合作夥伴裝置目錄中搜尋支援此功能的裝置](https://devices.amazonaws.com/search?kw=%22HSI%22&page=1)。

**Topics**
+ [要求](#hardware-security-requirements)
+ [硬體安全最佳實務](#hardware-security-best-practices)
+ [使用硬體安全性安裝 AWS IoT Greengrass 核心軟體](#install-with-hardware-security)
+ [在現有核心裝置上設定硬體安全性](#enable-hardware-security)
+ [在沒有 PKCS\$111 支援的情況下使用硬體](#hardware-without-pkcs11)
+ [另請參閱](#hardware-security-see-also)

## 要求
<a name="hardware-security-requirements"></a>

您必須符合下列要求，才能在 Greengrass 核心裝置上使用 HSM：
+ 核心裝置上已安裝 [Greengrass 核 v](greengrass-nucleus-component.md)2.5.3 或更新版本。您可以在核心裝置上安裝 AWS IoT Greengrass 核心軟體時，選擇相容的版本。
+ 安裝在核心裝置上的 [PKCS\$111 提供者元件](pkcs11-provider-component.md)。您可以在核心裝置上安裝 AWS IoT Greengrass Core 軟體時下載並安裝此元件。
+ <a name="hardware-security-module-requirements-key"></a>支援 [PKCS\$11 v1.5 ](https://tools.ietf.org/html/rfc2313)簽章結構描述和具有 RSA-2048 金鑰大小 （或更大） 或 ECC 金鑰的 RSA 金鑰的硬體安全模組。
**注意**  <a name="hardware-security-module-requirements-key-notes"></a>
若要搭配 ECC 金鑰使用硬體安全模組，您必須使用 [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.6 或更新版本。  
若要使用硬體安全模組和[秘密管理員](secret-manager-component.md)，您必須搭配 RSA 金鑰使用硬體安全模組。
+ <a name="hardware-security-module-requirements-pkcs11-provider-library"></a> AWS IoT Greengrass 核心軟體可在執行時間 （使用 libdl) 載入的 PKCS\$111 提供者程式庫，以叫用 PKCS\$111 函數。PKCS\$111 提供者程式庫必須實作下列 PKCS\$111 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`
+ <a name="hardware-security-module-requirements-slot-label"></a>硬體模組必須可透過插槽標籤根據 PKCS\$111 規格中的定義來解析。
+ <a name="hardware-security-module-requirements-private-key-and-certificate"></a>您必須將私有金鑰和憑證存放在相同插槽的 HSM 中，如果 HSM 支援物件 ID，則必須使用相同的物件標籤和物件 IDs。
+ <a name="hardware-security-module-requirements-object-label"></a>憑證和私有金鑰必須透過物件標籤解析。
+ <a name="hardware-security-module-requirements-private-key-permissions"></a>私有金鑰必須具有下列許可：
  + `sign`
  + `decrypt`
+ <a name="hardware-security-module-requirements-secret-manager-permissions"></a>（選用） 若要使用[秘密管理員元件](secret-manager-component.md)，您必須使用 2.1.0 版或更新版本，且私有金鑰必須具有下列許可：
  + `unwrap`
  + `wrap`

## 硬體安全最佳實務
<a name="hardware-security-best-practices"></a>

在 Greengrass 核心裝置上設定硬體安全性時，請考慮下列最佳實務。
+ 使用內部硬體隨機號碼產生器，直接在 HSM 產生私有金鑰。這種方法比匯入您在其他地方產生的私有金鑰更安全，因為私有金鑰會保留在 HSM 中。
+ 將私有金鑰設定為不可變，並禁止匯出。
+ 使用 HSM 硬體廠商建議的佈建工具，使用受硬體保護的私有金鑰產生憑證簽署請求 (CSR)，然後使用 AWS IoT 主控台或 API 產生用戶端憑證。

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

## 使用硬體安全性安裝 AWS IoT Greengrass 核心軟體
<a name="install-with-hardware-security"></a>

安裝 AWS IoT Greengrass Core 軟體時，您可以將其設定為使用您在 HSM 中產生的私有金鑰。此方法遵循[安全最佳實務](#hardware-security-best-practices)，以在 HSM 中產生私有金鑰，因此私有金鑰會保留在 HSM 中。

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

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

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

1. 從 CSR 建立憑證。您可以建立由 AWS IoT 或其他根憑證授權機構 (CA) 簽署的憑證。如需如何使用另一個根 CA 的詳細資訊，請參閱《 *AWS IoT Core 開發人員指南*》中的[建立您自己的用戶端憑證](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html)。

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

1. 從組態檔案安裝 AWS IoT Greengrass Core 軟體，指定 使用 PKCS\$111 提供者元件，以及 HSM 中的私有金鑰和憑證。

您可以選擇下列其中一個安裝選項，以安裝具有硬體安全性的 AWS IoT Greengrass Core 軟體：
+ **手動安裝**

  選擇此選項可手動建立所需的 AWS 資源並設定硬體安全性。如需詳細資訊，請參閱[使用手動資源佈建安裝 AWS IoT Greengrass 核心軟體](manual-installation.md)。
+ **使用自訂佈建進行安裝**

  選擇此選項可開發自訂 Java 應用程式，以自動建立所需的 AWS 資源並設定硬體安全性。如需詳細資訊，請參閱[使用自訂資源佈建安裝 AWS IoT Greengrass 核心軟體](custom-provisioning.md)。

目前，當您使用[自動資源佈建](quick-installation.md)或[AWS IoT 機群佈建](fleet-provisioning.md)安裝 時， AWS IoT Greengrass 不支援安裝具有硬體安全性 AWS IoT Greengrass 的核心軟體。

## 在現有核心裝置上設定硬體安全性
<a name="enable-hardware-security"></a>

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

**考量事項**  
您必須擁有核心裝置檔案系統的根存取權。
在此程序中，您會關閉 AWS IoT Greengrass Core 軟體，因此核心裝置會在您設定硬體安全性時離線且無法使用。

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

1. 初始化 HSM。

1. 將 [PKCS\$111 提供者元件](pkcs11-provider-component.md)部署至核心裝置。

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

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

1. 更新 AWS IoT Greengrass Core 軟體的組態檔案，以在 HSM 中使用私有金鑰和憑證。

1. 啟動 AWS IoT Greengrass 核心軟體。

### 步驟 1：初始化硬體安全模組
<a name="enable-hardware-security-initialize-hsm"></a>

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

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

### 步驟 2：部署 PKCS\$111 提供者元件
<a name="enable-hardware-security-deploy-pkcs11-provider"></a>

請完成下列步驟，以部署和設定 [PKCS\$111 提供者元件](pkcs11-provider-component.md)。您可以將元件部署到一或多個核心裝置。

#### 部署 PKCS\$111 提供者元件 （主控台）
<a name="deploy-pkcs11-provider-component-console"></a>

1. 在[AWS IoT Greengrass 主控台](https://console.aws.amazon.com/greengrass)導覽功能表中，選擇**元件**。

1. 在**元件**頁面上，選擇**公有元件**索引標籤，然後選擇 **aws.greengrass.crypto.Pkcs11Provider**。

1. 在 **aws.greengrass.crypto.Pkcs11Provider** 頁面中，選擇**部署**。

1. <a name="deploy-component-choose-deployment-step"></a>從**新增至部署**中，選擇要修改的現有部署，或選擇建立新的部署，然後選擇**下一步**。

1. <a name="deploy-component-choose-target-step"></a>如果您選擇建立新的部署，請選擇部署的目標核心裝置或物件群組。在**指定目標**頁面的**部署目標**下，選擇核心裝置或物件群組，然後選擇**下一步**。

1. 在**選取元件**頁面的**公有元件**下，選取 **aws.greengrass.crypto.Pkcs11Provider**，然後選擇**下一步**。

1. 在**設定元件**頁面上，選取 **aws.greengrass.crypto.Pkcs11Provider**，然後執行下列動作：

   1. 選擇**設定元件**。

   1. 在**設定aws.greengrass.crypto.Pkcs11Provider**模態、**在組態更新**下，在**要合併的組態**中，輸入下列組態更新。使用目標核心裝置的值更新下列組態參數。指定您先前初始化 PKCS\$111 字符的槽 ID 和使用者 PIN 碼。您稍後會將私有金鑰和憑證匯入 HSM 中的此插槽。<a name="pkcs11-provider-component-configuration-parameters"></a>  
`name`  
PKCS\$111 組態的名稱。  
`library`  
 AWS IoT Greengrass 核心軟體可以使用 libdl 載入之 PKCS\$111 實作程式庫的絕對檔案路徑。  
`slot`  
包含私有金鑰和裝置憑證的插槽 ID。此值與槽索引或槽標籤不同。  
`userPin`  
用來存取插槽的使用者 PIN 碼。

      ```
      {
        "name": "softhsm_pkcs11",
        "library": "/usr/lib/softhsm/libsofthsm2.so",
        "slot": 1,
        "userPin": "1234"
      }
      ```

   1. 選擇**確認**以關閉模態，然後選擇**下一步**。

1. <a name="deploy-component-configure-advanced-settings-step"></a>在**設定進階設定**頁面上，保留預設組態設定，然後選擇 **下一步**。

1. <a name="deploy-component-review-and-deploy-step"></a>在 **Review (檢閱)** 頁面，選擇 **Deploy (部署)**。

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

#### 部署 PKCS\$111 提供者元件 (AWS CLI)
<a name="deploy-pkcs11-provider-component-cli"></a>

若要部署 PKCS\$111 提供者元件，請建立包含在 `components` 物件`aws.greengrass.crypto.Pkcs11Provider`中的部署文件，並指定元件的組態更新。遵循 中的指示[建立部署](create-deployments.md)建立新的部署或修改現有的部署。

下列範例部分部署文件會指定 部署和設定 PKCS\$111 提供者元件。使用目標核心裝置的值更新下列組態參數。儲存插槽 ID 和使用者 PIN 碼，以供稍後將私有金鑰和憑證匯入 HSM 時使用。<a name="pkcs11-provider-component-configuration-parameters"></a>

`name`  
PKCS\$111 組態的名稱。

`library`  
 AWS IoT Greengrass 核心軟體可以使用 libdl 載入之 PKCS\$111 實作程式庫的絕對檔案路徑。

`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\$111 供應商元件已成功部署。如需詳細資訊，請參閱下列內容：
+ [檢查部署狀態](check-deployment-status.md)
+ [監控 AWS IoT Greengrass 日誌](monitor-logs.md)

如果部署失敗，您可以對每個核心裝置上的部署進行疑難排解。如需詳細資訊，請參閱[故障診斷 AWS IoT Greengrass V2](troubleshooting.md)。

### 步驟 3：更新核心裝置上的組態
<a name="enable-hardware-security-configure-core-device"></a>

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

**更新核心裝置上的組態以使用硬體安全性**

1. 停止 AWS IoT Greengrass 核心軟體。如果您[將 AWS IoT Greengrass Core 軟體設定為使用 systemd 的系統服務](configure-greengrass-core-v2.md#configure-system-service)，您可以執行下列命令來停止軟體。

   ```
   sudo systemctl stop greengrass.service
   ```

1. 尋找核心裝置的私有金鑰和憑證檔案。
   + 如果您使用[自動佈建](quick-installation.md)或[機群佈建](fleet-provisioning.md)安裝 AWS IoT Greengrass 核心軟體，私有金鑰存在於 `/greengrass/v2/privKey.key`，而憑證存在於 `/greengrass/v2/thingCert.crt`。
   + 如果您使用[手動佈建](manual-installation.md)安裝 AWS IoT Greengrass 核心軟體，`/greengrass/v2/private.pem.key`則預設情況下私有金鑰位於 ，且憑證`/greengrass/v2/device.pem.crt`預設存在於 。

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

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

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

   請執行下列操作：

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

      ```
      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
      ```

   1. 在文字編輯器中開啟 AWS IoT Greengrass 核心組態檔案。例如，您可以執行下列命令來使用 GNU nano 來編輯檔案。`/greengrass/v2` 將 取代為 Greengrass 根資料夾的路徑。

      ```
      sudo nano /greengrass/v2/config/effectiveConfig.yaml
      ```

   1. 將 的值取代`system.privateKeyPath`為 HSM 中私有金鑰的 PKCS\$111 URI。將 *iotdevicekey* 取代為您先前匯入私有金鑰和憑證的物件標籤。

      ```
      pkcs11:object=iotdevicekey;type=private
      ```

   1. 將 的值取代`system.certificateFilePath`為 HSM 中憑證的 PKCS\$111 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"
   ```

1. 在更新的`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
   ```

1. 啟動 AWS IoT Greengrass 核心軟體。如果您[將 AWS IoT Greengrass Core 軟體設定為具有 systemd 的系統服務](configure-greengrass-core-v2.md#configure-system-service)，您可以執行下列命令來啟動軟體。

   ```
   sudo systemctl start greengrass.service
   ```

   如需詳細資訊，請參閱[執行 AWS IoT Greengrass 核心軟體](run-greengrass-core-v2.md)。

1. 檢查 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}
   ```

1. （選用） 驗證 AWS IoT Greengrass Core 軟體是否可與 HSM 中的私有金鑰和憑證搭配使用後，請從裝置的檔案系統刪除私有金鑰和憑證檔案。執行下列命令，並將檔案路徑取代為私有金鑰和憑證檔案的路徑。

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

## 在沒有 PKCS\$111 支援的情況下使用硬體
<a name="hardware-without-pkcs11"></a>

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

## 另請參閱
<a name="hardware-security-see-also"></a>
+ [PKCS \$111 密碼編譯字符界面使用者指南 2.4.0 版](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html)
+ [RFC 7512](https://tools.ietf.org/html/rfc7512)
+ [PKCS \$11: RSA Encryption Version 1.5](https://tools.ietf.org/html/rfc2313)