管理 IoT Edge 证书

适用于:Yes 图标 IoT Edge 1.1

重要

IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 有关此产品、服务、技术或 API 支持方式的信息,请查看 Microsoft产品生命周期 。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge

所有 IoT Edge 设备使用证书在运行时与设备上运行的任何模块之间创建安全连接。 充当网关的 IoT Edge 设备也使用相同的证书连接到其下游设备。 有关 IoT Edge 设备上不同证书的功能的详细信息,请参阅 了解 Azure IoT Edge 如何使用证书

注释

整篇文章中的术语“根 CA”指的是 IoT 解决方案证书链条中的最高层级颁发机构的证书。 无需使用第三方证书颁发机构的根证书或您组织的证书颁发机构的根证书。 在许多情况下,它实际上是中间 CA 证书。

先决条件

  • 了解 Azure IoT Edge 如何使用证书

  • 一个 IoT Edge 设备。 如果未设置 IoT Edge 设备,可在 Azure 虚拟机中创建一个。 按照其中一篇快速入门文章中的步骤 创建虚拟 Linux 设备创建虚拟 Windows 设备

  • 能够按照config.toml编辑 IoT Edge 配置文件

    • 如果config.toml不是基于模板,请打开模板,并根据评论中的指南按照模板结构添加配置部分。

    • 如果有尚未配置的新 IoT Edge 安装,请复制模板以初始化配置。 如果有现有配置,请勿使用此命令。 它会覆盖文件。

      sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
      

设备 CA

所有 IoT Edge 设备使用证书在运行时与设备上运行的任何模块之间创建安全连接。 充当网关的 IoT Edge 设备也使用相同的证书连接到其下游设备。 有关 IoT Edge 设备上不同证书的功能的详细信息,请参阅 了解 Azure IoT Edge 如何使用证书

在某些情况下,IoT Edge 会在设备上自动生成设备 CA,包括:

  • 如果在安装和预配 IoT Edge 时未提供自己的生产证书,IoT Edge 安全管理器会自动生成 设备 CA 证书。 这个自签名证书仅用于开发和测试方案,而不可用于生产。 此证书在 90 天后过期。
  • IoT Edge 安全管理器还会生成由设备 CA 证书签名的负载 CA 证书。

对于这两个自动生成的证书,可以选择在配置文件中设置标志,以配置证书生存期的天数。

注释

IoT Edge 安全管理器创建的第三个自动生成的证书是 IoT Edge 中心服务器证书。 此证书的生存期始终为 30 天,但在过期之前会自动续订。 配置文件中设置的自动生成的 CA 生存期值不会影响此证书。

自定义快速入门设备 CA 证书生存期

在指定天数后过期后,必须重启 IoT Edge 以重新生成设备 CA 证书。 设备 CA 证书不会自动续订。

  1. 若要将证书过期时间配置为默认 90 天以外的其他内容,请将值(以天为单位)添加到配置文件的 证书 部分。

    certificates:
      device_ca_cert: "<ADD URI TO DEVICE CA CERTIFICATE HERE>"
      device_ca_pk: "<ADD URI TO DEVICE CA PRIVATE KEY HERE>"
      trusted_ca_certs: "<ADD URI TO TRUSTED CA CERTIFICATES HERE>"
      auto_generated_ca_lifetime_days: <value>
    

    注释

    目前,libiothsm 存在一个限制,不允许使用在 2038 年 1 月 1 日或之后到期的证书。

  2. 删除 hsm 文件夹的内容以删除任何以前生成的证书。

    • /var/aziot/hsm/certs
    • /var/aziot/hsm/cert_keys
  3. 重启 IoT Edge 服务。

    sudo systemctl restart iotedge
    
  4. 确认生命周期设置。

    sudo iotedge check --verbose
    

    查看 生产就绪性:证书 检查的输出,其中列出了自动生成的设备 CA 证书到期前的天数。

安装用于生产的设备 CA

进入生产方案或想要创建网关设备后,需要提供自己的证书。

为生产创建和安装设备 CA

  1. 使用自己的证书颁发机构创建以下文件:

    • 根 CA
    • 设备 CA 证书
    • 设备的 CA 私钥

    根 CA 不是组织的最高级证书颁发机构。 它是 IoT Edge 方案最顶级的证书颁发机构,IoT Edge 中心模块、用户模块和任何下游设备用于建立彼此之间的信任。

    若要查看这些证书的示例,请查看在 管理示例和教程的测试 CA 证书中创建演示证书的脚本。

    注释

    目前,libiothsm 存在一个限制,不允许使用在 2038 年 1 月 1 日或之后到期的证书。

  2. 将三个证书和密钥文件复制到 IoT Edge 设备上。 可以使用 Azure Key Vault 等服务或 安全复制协议 等函数移动证书文件。 如果在 IoT Edge 设备本身上生成了证书,则可以跳过此步骤并使用工作目录的路径。

    小提示

    如果使用示例脚本 创建演示证书,则三个证书和密钥文件位于以下路径:

    • 设备 CA 证书:<WRKDIR>\certs\iot-edge-device-MyEdgeDeviceCA-full-chain.cert.pem
    • 设备 CA 私钥:<WRKDIR>\private\iot-edge-device-MyEdgeDeviceCA.key.pem
    • 根 CA:<WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
  1. 打开 IoT Edge 安全守护程序配置文件:/etc/iotedge/config.yaml

  2. 将 config.yaml 中的 证书 属性设置为 IoT Edge 设备上的证书和密钥文件的文件 URI 路径。 删除证书属性之前 # 字符以取消注释四行。 确保 证书: 行没有前面的空格,并且嵌套项被两个空格缩进。 例如:

    certificates:
       device_ca_cert: "file:///<path>/<device CA cert>"
       device_ca_pk: "file:///<path>/<device CA key>"
       trusted_ca_certs: "file:///<path>/<root CA cert>"
    
  3. 确保用户 iotedge 对持有证书的目录具有读/写权限。

  4. 如果以前在设备上为 IoT Edge 使用了任何其他证书,请在启动或重启 IoT Edge 之前删除以下两个目录中的文件:

    • /var/aziot/hsm/certs
    • /var/aziot/hsm/cert_keys
  5. 重启 IoT Edge。

    sudo iotedge system restart
    

模块服务器证书

Edge 守护程序颁发模块服务器和标识证书以供 Edge 模块使用。 Edge 模块仍负责根据需要续订其标识和服务器证书。

续订

服务器证书可能通过边缘 CA 证书或通过 DPS 配置的 CA 颁发。 无论颁发方法如何,模块都必须续订这些证书。

1.2 及更高版本中的更改

  • “设备 CA 证书”已重命名为“Edge CA 证书”。
  • “工作负载 CA 证书”已被弃用。 现在,IoT Edge 安全管理器直接从 Edge CA 证书生成 IoT Edge 中心 edgeHub 服务器证书,它们之间没有中间工作负载 CA 证书。
  • 默认配置文件采用新的名称和位置,默认为从 /etc/iotedge/config.yaml/etc/aziot/config.toml。 可借助 iotedge config import 命令将配置信息从旧位置迁移到新位置,并将旧语法更改为新语法。

后续步骤

在生产环境中部署解决方案之前,必须先在 IoT Edge 设备上安装证书。 详细了解如何 准备在生产环境中部署 IoT Edge 解决方案