

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 中的数据保护 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 Security Blog* 上的 [AWS Shared Responsibility Model and 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）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括您使用控制台、API AWS IoT Greengrass 或以其他 AWS 服务 方式使用控制台 AWS CLI、API 或时 AWS SDKs。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 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 使用加密来保护传输中的数据（通过 Internet 或本地网络）和静态数据（存储在 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 有两种传输数据的通信模式：
+ [通过 Internet 传输的数据](#data-in-transit-internet). Greengrass 核心和 AWS IoT Greengrass 通过互联网进行的通信是加密的。
+ [核心设备上的数据](#data-in-transit-locally). Greengrass 核心设备上的组件之间的通信未加密

## 通过 Internet 传输的数据
<a name="data-in-transit-internet"></a>

AWS IoT Greengrass 使用传输层安全性 (TLS) 来加密通过 Internet 进行的所有通信。发送到 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](secret-manager-component.md) 组件。

# Greengrass 核心设备的密钥管理
<a name="key-management"></a>

客户有责任保证在 Greengrass 核心设备上安全存储加密（公共和私有）密钥。在以下情况下，AWS IoT Greengrass 使用公钥和私钥：
+ IoT 客户端密钥与 IoT 证书一起使用，以便在 Greengrass 核心连接 AWS IoT Core 时对传输层安全性 (TLS) 握手进行身份验证。有关更多信息，请参阅 [设备身份验证和授权 AWS IoT Greengrass](device-auth.md)。
**注意**  
密钥和证书也称为核心私钥和核心设备证书。

Greengrass 核心设备支持使用文件系统权限或[硬件安全模块](hardware-security.md)进行的私钥存储。如果您使用基于文件系统的私钥，您需要负责在核心设备上安全存储这些私钥。

# 硬件安全性集成
<a name="hardware-security"></a>

**注意**  
[此功能可用于 Greengrass nucleus 组件的 v2.5.3 及更高版本。](greengrass-nucleus-component.md) AWS IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。

您可以通过 [PKCS \$111](https://en.wikipedia.org/wiki/PKCS_11) 接口将 AWS IoT Greengrass 核心软件配置为使用硬件安全模块 (HSM)。此功能使您能够安全地存储设备的私有密钥和证书，避免其在软件中暴露或重复。您可以将私有密钥和证书存储在 HSM 或可信平台模块（TPM）等硬件模块上。

 AWS IoT Greengrass Core 软件使用私钥和 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 Core 软件](#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 Nucleus](greengrass-nucleus-component.md) v2.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 密钥大小（或更大）的 RSA 密钥或 ECC 密钥的硬件安全模块。
**注意**  <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>一个 PKCS \$111 提供程序库， AWS IoT Greengrass 核心软件可以在运行时加载该库（使用 libdl）来调用 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 Core 软件
<a name="install-with-hardware-security"></a>

安装 AWS IoT Greengrass Core 软件时，可以将其配置为使用在 HSM 中生成的私钥。这种方法遵循[安全最佳实践](#hardware-security-best-practices)，在 HSM 中生成私钥，使私钥保留在 HSM 中。

要安装具有硬件安全性的 AWS IoT Greengrass Core 软件，请执行以下操作：

1. 在 HSM 中生成私有密钥。

1. 通过私有密钥创建证书签名请求（CSR）。

1. 通过 CSR 创建证书。您可以创建由其他根证书颁发机构 (CA) 签名 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. 从指定使用 PKCS \$111 提供程序组件以及 HSM 中的私钥和证书的配置文件中安装 C AWS IoT Greengrass ore 软件。

您可以选择以下安装选项之一来安装具有硬件安全性的 AWS IoT Greengrass Core 软件：
+ **手动安装**

  选择此选项可手动创建所需的 AWS 资源并配置硬件安全。有关更多信息，请参阅 [使用手动资源配置来安装 AWS IoT Greengrass Core 软件](manual-installation.md)。
+ **使用自定义预置进行安装**

  选择此选项可开发自定义 Java 应用程序，该应用程序可自动创建所需 AWS 资源并配置硬件安全。有关更多信息，请参阅 [安装具有自定义资源配置功能的 C AWS IoT Greengrass ore 软件](custom-provisioning.md)。

当前，在使用[自动资源配置或[AWS IoT 队列配置](fleet-provisioning.md)进行安装时， AWS IoT Greengrass 不支持安装具有](quick-installation.md)硬件安全性的 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>在 **检查** 页上，选择 **部署**。

   完成部署可能最多需要 1 分钟。

#### 部署 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>

C AWS IoT Greengrass ore 软件使用指定设备运行方式的配置文件。此配置文件包含可以在哪里找到设备用于连接 AWS 云的私有密钥和证书。完成以下步骤，将核心设备的私有密钥和证书导入 HSM，并更新配置文件以使用 HSM。

**更新核心设备上的配置以采用硬件安全性**

1. 停止 AWS IoT Greengrass 核心软件。如果您[使用 systemd 将 AWS IoT Greengrass 核心软件配置为系统服务](configure-greengrass-core-v2.md#configure-system-service)，则可以运行以下命令来停止该软件。

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

1. 找到核心设备的私有密钥和证书文件。
   + 如果您安装了具有[自动配置或[队列配置](fleet-provisioning.md)功能](quick-installation.md)的 C AWS IoT Greengrass ore 软件，则私钥存在于`/greengrass/v2/privKey.key`，证书存在于`/greengrass/v2/thingCert.crt`。
   + 如果您安装了[手动配置](manual-installation.md)的 AWS IoT Greengrass Core 软件，则`/greengrass/v2/private.pem.key`默认情况下私钥存在，证书`/greengrass/v2/device.pem.crt`默认存在。

   您也可以在 `/greengrass/v2/config/effectiveConfig.yaml` 中查看 `system.privateKeyPath` 和 `system.certificateFilePath` 属性以查找这些文件的位置。

1. 将私有密钥和证书导入 HSM。查看 HSM 文档，了解如何导入私有密钥和证书。使用之前初始化 PKCS\$111 令牌的槽 ID 和用户 PIN 导入私有密钥和证书。私有密钥和证书必须使用相同的对象标签和对象 ID。保存您在导入每个文件时指定的对象标签。稍后在更新 AWS IoT Greengrass Core 软件配置以使用 HSM 中的私钥和证书时，您将使用此标签。

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

   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 Core 配置文件中的`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` 文件中应用配置。使用 `--init-config` 参数运行 `Greengrass.jar` 以在 `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 核心软件。如果您[使用 systemd 将 AWS IoT Greengrass 核心软件配置为系统服务](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 Core 软件日志，验证软件是否启动并连接到 AWS 云。C AWS IoT Greengrass ore 软件使用私钥和证书连接到 AWS IoT 和 AWS IoT Greengrass 服务。

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

   以下信息级别的日志消息表明 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 核心软件是否可以使用 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 企业支持代表，咨询与集成相关的问题。

## 另请参阅
<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 加密版本 1.5](https://tools.ietf.org/html/rfc2313)