适用于: 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 证书作为身份验证方法。 若要使用对称密钥,请参阅 使用对称密钥在 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 列表。
生成设备标识证书
使用 X.509 证书进行手动预配需要 IoT Edge 1.0.10 或更高版本。
使用 X.509 证书预配 IoT Edge 设备时,你需要使用被称为 设备标识证书。 此证书仅用于预配 IoT Edge 设备,以及通过 Azure IoT 中心对设备进行身份验证。 它是一种不签署其他证书的叶证书。 设备标识证书不同于 IoT Edge 设备提供给模块或下游设备进行验证的证书颁发机构 (CA) 证书。
对于 X.509 证书身份验证,每个设备的身份验证信息采用从设备标识证书获取的拇指指纹的形式提供。 在注册设备时,会向 IoT 中心提供这些指纹,以便服务在连接时能够识别设备。
若要详细了解如何在 IoT Edge 设备中使用 CA 证书,请参阅了解 Azure IoT Edge 如何使用证书。
若要使用 X.509 进行手动预配,需要以下文件:
两个设备标识证书,其匹配的私钥证书采用 .cer 或 .pem 格式。
向 IoT Edge 运行时提供一组证书/密钥文件。 创建设备标识证书时,请将证书公用名 (CN) 设置为你希望该设备在 IoT 中心具有的设备 ID。
从两个设备标识证书获取的指纹。
SHA-1 哈希的指纹值为 40 个十六进制字符,SHA-256 哈希的指纹值为 64 个十六进制字符。 在注册设备时,两个指纹都将提供给 IoT 中心。
如果没有可用的证书,可以创建演示证书以测试 IoT Edge 设备功能。 按照本文中的说明设置证书创建脚本,创建根 CA 证书,然后创建两个 IoT Edge 设备标识证书。
从证书中检索指纹的一种方法是使用以下 openssl 命令:
openssl x509 -in <certificate filename>.pem -text -fingerprint
注册您的设备
根据你的偏好,你可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 来注册设备。
在 Azure 门户你的 IoT 中心内,IoT Edge 设备的创建和管理独立于不支持 Edge 的 IoT 设备。
登录 Azure 门户,导航到 IoT 中心。
在左侧窗格中,从菜单中选择“设备”,然后选择“添加设备”。
在“创建设备”页面上,提供以下信息:
- 创建描述性设备 ID。 记下此设备 ID,因为稍后将使用它。
- 选中“IoT Edge 设备”复选框。
- 选择“X.509 自签名”作为身份验证类型。
- 提供主要和辅助标识证书指纹。 SHA-1 哈希的指纹值为 40 个十六进制字符,SHA-256 哈希的指纹值为 64 个十六进制字符。
选择 保存。
现在您已经在 IoT 中心注册了一个设备,请检索用于完成 IoT Edge 运行时安装和配置的信息。
查看已注册设备并检索预配信息
使用 X.509 证书进行身份验证的设备需要其 IoT 中心名称、设备名称及证书文件才能完成 IoT Edge 运行时的安装和预配。
连接到 IoT 中心并已启用 Edge 的设备将在“设备”页上列出。 可以按类型 IoT Edge 设备筛选列表。
安装 IoT Edge
在本部分中,你将为 IoT Edge 准备 Windows VM 或物理设备。 然后安装 IoT Edge。
Azure IoT Edge依赖于与 OCI 兼容的容器运行时。 Moby(基于 Moby 的引擎)包含在安装脚本中,这意味着没有安装引擎的其他步骤。
要安装 IoT Edge 运行时软件:
以管理员身份运行 PowerShell。
使用 PowerShell 的 AMD64 会话,而不是 PowerShell(x86)。 如果不确定所使用的会话类型,请运行以下命令:
(Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
运行 Deploy-IoTEdge 命令,该命令执行以下任务:
- 检查 Windows 设备是否在受支持的版本上
- 打开容器功能
- 下载 moby 引擎和 IoT Edge 运行时
. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; ` Deploy-IoTEdge
如果系统提示,请重启设备。
在设备上安装 IoT Edge 时,可以使用其他参数来修改该过程,包括:
- 把流量导向通过代理服务器
- 将安装程序指向用于脱机安装的本地目录
有关这些附加参数的详细信息,请参阅 具有 Windows 容器的 IoT Edge 的 PowerShell 脚本。
为设备预配其云标识
现在,容器引擎和 IoT Edge 运行时已安装在设备上,接下来即可完成下一步,即使用其云标识和身份验证信息设置设备。
在 IoT Edge 设备上,以管理员身份运行 PowerShell。
使用 Initialize-IoTEdge 命令在计算机上配置 IoT Edge 运行时。
. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; ` Initialize-IoTEdge -ManualX509
如果将 IoTEdgeSecurityDaemon.ps1 脚本下载到设备上进行脱机或特定版本安装,请务必引用脚本的本地副本。
. <path>/IoTEdgeSecurityDaemon.ps1 Initialize-IoTEdge -ManualX509
出现提示时,请提供以下信息:
-
IotHubHostName:设备将连接到的 IoT 中心的主机名。 例如,
{IoT_hub_name}.azure-devices.net
。 - DeviceId:注册设备时提供的 ID。
-
X509IdentityCertificate:设备上的标识证书的绝对路径。 例如,
C:\path\identity_certificate.pem
。 -
X509IdentityPrivateKey:提供的标识证书私钥文件的绝对路径。 例如,
C:\path\identity_key.pem
。
-
IotHubHostName:设备将连接到的 IoT 中心的主机名。 例如,
手动预配设备时,可以使用其他参数来修改该过程,包括:
- 定向流量通过代理服务器
- 声明特定的 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 连接的情况下进行安装。
有关最新的 IoT Edge 安装文件以及以前的版本,请参阅 Azure IoT Edge 版本。
找到要安装的版本,并从发行说明 资产 部分下载以下文件到 IoT 设备上:
- IoTEdgeSecurityDaemon.ps1
- Microsoft-Azure-IoTEdge-amd64.cab 来自 1.1 版本发布渠道。
请务必使用与所使用的 .cab 文件相同的版本中的 PowerShell 脚本,因为功能会更改以支持每个版本中的功能。
如果下载的 .cab 文件具有体系结构后缀,请将该文件重命名为仅 Microsoft-Azure-IoTEdge.cab。
(可选)下载 Visual C++ 可再发行的安装程序。 例如,PowerShell 脚本使用此版本:vc_redist.x64.exe。 将安装程序保存在 IoT 设备上的同一文件夹中,与 IoT Edge 文件相同。
若要使用脱机组件进行安装,点源 PowerShell 脚本的本地副本。
使用 参数运行
-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 模块,了解如何将模块部署到设备上。