使用对称密钥在 Windows 上创建和预配 IoT Edge 设备

适用于:确认图标 IoT Edge 1.1

重要

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

本文提供用于注册和预配 Windows IoT Edge 设备的端到端说明。

注释

从 Azure IoT Edge 版本 1.2 开始,不支持使用 Windows 容器的 Azure IoT Edge。

请考虑使用新方法在 Windows 设备上运行 IoT Edge,适用于 Linux 的 Azure IoT Edge on Windows

若要在 Windows 上使用适用于 Linux 的 Azure IoT Edge,可以按照 等效的操作指南中的步骤进行操作。

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

本文中的步骤演示了一个名为“手动预配”的过程。在手动预配过程中,你可以将单个设备连接到其 IoT 中心。 对于手动预配,可以通过两种方式来验证 IoT Edge 设备:

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

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

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

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

本文介绍如何使用对称密钥作为身份验证方法。 若要使用 X.509 证书,请参阅 使用 X.509 证书在 Windows 上创建和预配 IoT Edge 设备

注释

如果要设置多个设备,并且不想手动预配每个设备,请参阅以下文章之一来了解 IoT Edge 如何与 IoT 中心设备预配服务配合工作:

先决条件

本文介绍如何注册 IoT Edge 设备并在设备上安装 IoT Edge。 这些任务具有不同的先决条件和用于完成这些任务的实用程序。 在继续操作之前,请确保已满足所有先决条件。

设备管理工具

你可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 来完成注册设备的步骤。 每个实用工具都有自己的先决条件:

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

设备要求

一台 Windows 设备。

具有 Windows 容器的 IoT Edge 需要 Windows 版本 1809/内部版本 17763,这是最新的 Windows 长期支持版本。 请务必查看 受支持的系统列表,以获取支持的 SKU 列表。

请注意,容器和主机上的 Windows 版本必须匹配。 有关详细信息,请参阅 由于 OS 不匹配而无法启动模块

注册您的设备

根据你的偏好,你可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 来注册设备。

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

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

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

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

    • 创建描述性设备 ID。 记下此设备 ID,因为稍后将使用它。
    • 勾选“IoT Edge 设备”复选框。
    • 选择“对称密钥”作为身份验证类型。
    • 使用默认设置自动生成身份验证密钥并将新设备连接到中心。
  4. 选择 保存

现在您已经在 IoT 中心注册了一个设备,请检索用于完成 IoT Edge 运行时安装和配置的信息。

查看已注册设备并检索预配信息

使用对称密钥身份验证的设备需要使用其连接字符串来完成 IoT Edge 运行时的安装和预配。

连接到 IoT 中心并已启用 Edge 的设备将在“设备”页上列出。 可以按类型 IoT Edge 设备筛选列表。

如何在 Azure 门户 IoT 中心查看设备的屏幕截图。

当您准备好设置设备时,您需要一个连接字符串,该字符串将您的物理设备与其在 IoT 中心的标识相连接。

使用对称密钥进行身份验证的设备有自己的连接字符串,可以在门户中复制这些连接字符串。

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

安装 IoT Edge

在本部分中,你将为 IoT Edge 准备 Windows VM 或物理设备。 然后安装 IoT Edge。

Azure IoT Edge依赖于与 OCI 兼容的容器运行时。 Moby(基于 Moby 的引擎)包含在安装脚本中,这意味着没有安装引擎的其他步骤。

要安装 IoT Edge 运行时软件:

  1. 以管理员身份运行 PowerShell。

    使用 PowerShell 的 AMD64 会话,而不是 PowerShell(x86)。 如果不确定所使用的会话类型,请运行以下命令:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. 运行 Deploy-IoTEdge 命令,该命令执行以下任务:

    • 检查 Windows 设备是否在受支持的版本上
    • 打开容器功能
    • 下载 “moby” 引擎和 “IoT Edge” 运行时
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. 如果系统提示,请重启设备。

在设备上安装 IoT Edge 时,可以使用其他参数来修改该过程,包括:

  • 将流量引导到代理服务器通过
  • 将安装程序指向用于脱机安装的本地目录

有关这些附加参数的详细信息,请参阅 具有 Windows 容器的 IoT Edge 的 PowerShell 脚本

为设备预配其云标识

现在,容器引擎和 IoT Edge 运行时已安装在设备上,接下来即可完成下一步,即使用其云标识和身份验证信息设置设备。

  1. 在 IoT Edge 设备上,以管理员身份运行 PowerShell。

  2. 使用 Initialize-IoTEdge 命令在计算机上配置 IoT Edge 运行时。 此命令默认使用 Windows 容器进行手动预配。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -ManualConnectionString -ContainerOs Windows
    
    • 如果将 IoTEdgeSecurityDaemon.ps1 脚本下载到设备上进行脱机或特定版本安装,请务必引用脚本的本地副本。

      . <path>/IoTEdgeSecurityDaemon.ps1
      Initialize-IoTEdge -ManualConnectionString -ContainerOs Windows
      
  3. 出现提示时,请提供在上一部分检索到的设备连接字符串。 设备连接字符串将物理设备与 IoT 中心的设备 ID 相关联,并提供身份验证信息。

    设备连接字符串采用以下格式,不应包含引号:HostName={IoT_hub_name}.azure-devices.net;DeviceId={device_name};SharedAccessKey={key}

手动预配设备时,可以使用其他参数来修改该过程,包括:

  • 将流量引导到代理服务器通过
  • 声明特定的 edgeAgent 容器镜像,如果该镜像在私有注册表中,则提供验证凭据。

有关这些附加参数的详细信息,请参阅 具有 Windows 容器的 IoT Edge 的 PowerShell 脚本

验证成功的配置

请验证运行时是否已在您的 IoT Edge 设备上成功安装和配置。

检查 IoT Edge 服务的状态。

Get-Service iotedge

检查服务日志。

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

列出正在运行的模块。

iotedge list

脱机或特定版本安装(可选)

本部分中的步骤适用于标准安装步骤未涵盖的方案。 这可能包括:

  • 离线安装 IoT Edge
  • 安装候选发布版本
  • 安装非最新版本

在安装期间下载三个文件:

  • PowerShell 脚本,其中包含安装说明
  • Microsoft Azure IoT Edge cab,其中包含 IoT Edge 安全守护程序(iotedged)、Moby 容器引擎和 Moby CLI
  • Visual C++ 可再发行包(VC 运行时)安装程序

如果设备在安装过程中处于脱机状态,或者想要安装特定版本的 IoT Edge,则可以提前将这些文件下载到设备。 安装时,请将安装脚本指向包含下载文件的目录。 安装程序先检查该目录,然后仅下载未找到的组件。 如果所有文件都脱机可用,则可以在没有 Internet 连接的情况下进行安装。

  1. 有关最新的 IoT Edge 安装文件以及以前的版本,请参阅 Azure IoT Edge 版本

  2. 找到要安装的版本,并从发行说明 资产 部分下载以下文件到 IoT 设备上:

    • IoTEdgeSecurityDaemon.ps1
    • Microsoft-Azure-IoTEdge-amd64.cab 来自 1.1 版本发布渠道。

    请务必使用与所使用的 .cab 文件相同的版本中的 PowerShell 脚本,因为功能会更改以支持每个版本中的功能。

  3. 如果下载的 .cab 文件具有体系结构后缀,请将该文件重命名为仅 Microsoft-Azure-IoTEdge.cab

  4. (可选)下载 Visual C++ 可再发行的安装程序。 例如,PowerShell 脚本使用此版本:vc_redist.x64.exe。 将安装程序保存在 IoT 设备上的同一文件夹中,与 IoT Edge 文件相同。

  5. 若要使用脱机组件进行安装,点源 PowerShell 脚本的本地副本。

  6. 使用 参数运行 -OfflineInstallationPath 命令。 提供文件目录的绝对路径。 例如,

    . path_to_powershell_module_here\IoTEdgeSecurityDaemon.ps1
    Deploy-IoTEdge -OfflineInstallationPath path_to_file_directory_here
    

    部署命令将使用在提供的本地文件目录中找到的任何组件。 如果缺少 .cab 文件或 Visual C++ 安装程序,它将尝试下载它们。

卸载 IoT Edge

如果要从 Windows 设备中删除 IoT Edge 安装,请使用管理 PowerShell 窗口中的 Uninstall-IoTEdge 命令。 此命令将删除 IoT Edge 运行时以及现有配置和 Moby 引擎数据。

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; `
Uninstall-IoTEdge

有关卸载选项的详细信息,请使用命令 Get-Help Uninstall-IoTEdge -full

后续步骤

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