使用对称密钥身份验证设置 Azure IoT Edge 设备

本文提供了相关步骤,用于在 IoT 中心注册新的 IoT Edge 设备并将相应设备配置为使用对称密钥进行身份验证。

本文中的步骤演示手动预配过程,在手动预配过程中,可手动将每个设备连接到其 IoT 中心。 另一种方式是使用 IoT 中心设备预配服务进行自动预配,在需要预配许多设备时,这会很有用。

对于手动预配,可以通过两种方式来验证 IoT Edge 设备:

  • 对称密钥:在 IoT 中心创建新的设备标识时,该服务会创建两个密钥。 将其中一个密钥置于设备上,并在进行身份验证时将该密钥提供给 IoT 中心。

    此身份验证方法更容易上手,但不够安全。

  • X.509 自签名:创建两个 X.509 标识证书并将其置于设备上。 在 IoT 中心创建新的设备标识时,需要提供两个证书的指纹。 当设备向 IoT 中心进行身份验证时,它将出示其证书,而 IoT 中心会验证证书是否与指纹匹配。

    此身份验证方法更安全,建议用于生产场景。

本文分步介绍使用对称密钥身份验证的注册和预配过程。 如果要了解如何使用 X.509 证书设置设备,请参阅使用 X.509 证书身份验证设置 Azure IoT Edge 设备

先决条件

在按照本文中的步骤进行操作之前,应已在设备上安装了 IoT Edge 运行时。 否则,请按照安装或卸载 Azure IoT Edge 运行时中的步骤进行操作。

注册新设备

连接到 IoT 中心的每个设备都有一个设备 ID,用于跟踪云到设备或设备到云的通信。 可以使用设备连接信息来配置设备,这些信息包括 IoT 中心主机名、设备 ID 以及设备用于向 IoT 中心进行身份验证的信息。

对于对称密钥身份验证,这些信息收集在连接字符串中,可以从 IoT 中心检索这些信息,然后将其置于 IoT Edge 设备上。

可以根据自己的喜好使用若干工具在 IoT 中心注册新的 IoT Edge 设备并检索其连接字符串。

Azure 门户的必备组件

Azure 订阅中的免费或标准 IoT 中心

在 Azure 门户中创建 IoT Edge 设备

在 Azure 门户的 IoT 中心,IoT Edge 设备的创建和管理独立于不支持 Edge 的 IoT 设备。

  1. 登录 Azure 门户,导航到 IoT 中心。

  2. 在左侧窗格中,从菜单中选择“IoT Edge”,然后选择“添加 IoT Edge 设备” 。

    Add an IoT Edge device from the Azure portal

  3. 在“创建设备”页面上,提供以下信息:

    • 创建描述性设备 ID。
    • 选择“对称密钥”作为身份验证类型。
    • 使用默认设置自动生成身份验证密钥并将新设备连接到中心。
  4. 选择“保存”。

在 Azure 门户中查看 IoT Edge 设备

所有连接到 IoT 中心并已启用 Edge 的设备都列在 IoT Edge 页上。

Use the Azure portal to view all IoT Edge devices in your IoT hub

在 Azure 门户中检索连接字符串

如果已准备好设置设备,则需要连接字符串,该字符串使用物理设备在 IoT 中心内的标识链接该设备。

  1. 在门户的 IoT Edge 页中,单击 IoT Edge 设备列表中的设备 ID。
  2. 复制“主连接字符串”或“辅助连接字符串”的值 。

预配 IoT Edge 设备

当 IoT Edge 设备在 IoT 中心具有标识和可用于身份验证的连接字符串后,你需要使用此信息来预配设备本身。

在 Linux 设备上,通过编辑 config.yaml 文件来提供连接字符串。 在 Windows 设备上,通过运行 PowerShell 脚本来提供连接字符串。

在 IoT Edge 设备上,打开配置文件。

sudo nano /etc/iotedge/config.yaml

找到文件的预配配置,并取消注释“使用连接字符串手动预配配置”部分。

使用 IoT Edge 设备的连接字符串更新 device_connection_string 的值。 请确保注释掉任何其他预配部分。请确保 provisioning: 行前面没有空格,并且嵌套项缩进了两个空格。

# Manual provisioning configuration using a connection string
provisioning:
  source: "manual"
  device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
  dynamic_reprovisioning: false

将剪贴板内容粘贴到 Nano Shift+Right Click 或按 Shift+Insert

保存并关闭该文件。

CTRL + XYEnter

在配置文件中输入预配信息后,重启守护程序:

sudo systemctl restart iotedge

验证安装是否成功

检查 IoT Edge 服务的状态。 该服务应列为“正在运行”。

systemctl status iotedge

检查服务日志。

journalctl -u iotedge --no-pager --no-full

运行故障排除工具,检查最常见的配置和网络错误。

iotedge check

在将第一个模块部署到设备上的 IoT Edge 之前, $edgeHub 系统模块不会部署到设备。 因此,自动检查会返回一个针对 Edge Hub can bind to ports on host 连接性检查的错误。 此错误可以忽略,除非它是在将模块部署到设备后发生的。

最后,列出正在运行的模块:

iotedge list

完成新的安装后,应会看到唯一运行的模块是 edgeAgent

提示和故障排除

在资源受限的设备上,强烈建议按照故障排除指南中的说明将 OptimizeForPerformance 环境变量设置为 false

如果设备无法连接到 IoT 中心且网络具有代理服务器,请按照配置 IoT Edge 设备以通过代理服务器进行通信中的步骤进行操作。

在 Linux 设备上,需要提升的权限才能运行 iotedge 命令。 安装运行时后,请从计算机中注销并重新登录以自动更新权限。 在此之前,请使用 sudo 通过提升的权限运行命令。

后续步骤

转到部署 IoT Edge 模块,了解如何将模块部署到设备上。