你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

IoT Central 中的设备身份验证概念

本文介绍设备如何对 IoT Central 应用程序进行身份验证。 若要详细了解整个连接过程,请参阅连接设备

设备对 IoT Central 应用程序进行身份验证的方法是使用共享访问签名 (SAS) 令牌或 X.509 证书。 在生产环境中,建议使用 X.509 证书。

需要使用注册组管理 IoT Central 应用程序中的设备身份验证选项。

本文介绍以下设备身份验证选项:

X.509 注册组

在生产环境中,建议使用 X.509 证书作为 IoT Central 的设备身份验证机制。 有关详细信息,请参阅使用 X.509 CA 证书进行设备身份验证

X.509 注册组包含根证书或中间 X.509 证书。 如果设备具有从根证书或中间证书派生的有效叶证书,设备可以进行身份验证。

要将具有 X.509 证书的设备连接到应用程序:

  1. 创建使用证书 (X.509) 证明类型的注册组
  2. 在注册组中添加并验证中间或根 X.509 证书。
  3. 从注册组中的根证书或中间证书生成叶证书。 在设备上安装叶证书,供它在连接到应用程序时使用。

每个注册组都应使用唯一的 X.509 证书。 IoT Central 不支持多个注册组使用相同的 X.509 证书。

有关详细信息,请参阅如何连接具有 X.509 证书的设备

仅用于测试目的

在生产环境中,使用你的证书提供者提供的证书。 (仅限测试)可以使用以下实用工具来生成根证书、中间证书和设备证书:

SAS 注册组

SAS 注册组包含组级 SAS 密钥。 如果设备具有从组级 SAS 密钥派生的有效 SAS 令牌,设备可以进行身份验证。

要将具有设备 SAS 令牌的设备连接到应用程序,请执行以下操作:

  1. 创建使用共享访问签名 (SAS) 证明类型的注册组

  2. 从注册组中复制组主密钥或辅助密钥。

  3. 使用 Azure CLI 从组密钥生成设备令牌:

    az iot central device compute-device-key --primary-key <enrollment group primary key> --device-id <device ID>
    
  4. 当设备连接到 IoT Central 应用程序时,使用生成的设备令牌。

注意

若要使用注册组中的现有 SAS 密钥,请禁用“自动生成密钥”切换按钮,手动输入 SAS 密钥

如果使用默认 SAS-IoT-Devices 注册组,IoT Central 会为你生成单个设备密钥。 若要访问这些密钥,请在设备详细信息页上选择“连接”。 此页面显示设备代码中使用的“ID 范围”、“设备 ID”、“主密钥”和“辅助密钥”。 此页面还显示包含相同数据的 QR 码。

单独注册

通常,设备使用从注册组 X.509 证书或 SAS 密钥派生的凭据进行连接。 但是,如果每个设备都有自己的凭据,可以使用单个注册。 单个注册是允许单个设备连接的入口。 单个注册可使用 X.509 叶证书或 SAS 令牌(来自物理或虚拟受信任的平台模块)作为证明机制。 有关详细信息,请参阅 DPS 单个注册

注意

为设备创建单个注册时,其优先级高于 IoT Central 应用程序中的默认注册组选项。

创建单个注册

IoT Central 支持以下单个注册证明机制:

  • 对称密钥证明:对称密钥证明是使用 DPS 实例验证设备的简单方法。 若要创建使用对称密钥的单个注册,请打开设备的“设备连接”页,选择“单个注册”作为身份验证类型,并选择“共享访问签名 (SAS)”作为身份验证方法。 输入 base64 编码的主密钥和辅助密钥,并保存所做的更改。 使用 ID 范围、设备 ID,以及主密钥或辅助密钥来连接设备

    提示

    如果用于测试,可以使用 OpenSSL 生成 base64 编码的密钥:openssl rand -base64 64

  • X.509 证书:若要使用 X.509 证书创建单个注册,请打开“设备连接”页,选择“单个注册”作为身份验证类型,并选择“证书 (X.509)”作为身份验证方法。 与单个注册条目一起使用的设备证书要求将证书颁发者和使用者 CN 设置为设备 ID。

    提示

    如果用于测试,可以使用适用于 Node.js 的 Azure IoT 设备预配设备 SDK 工具来生成自签名证书:node create_test_cert.js device "mytestdevice"

  • 受信任的平台模块 (TPM) 证明:TPM 是一种硬件安全模块。 使用 TPM 是连接设备最安全的方法之一。 本文假定你使用单独的、固件式的或集成式的 TPM。 软件模拟 TPM 适用于原型制作或测试,但其提供的安全级别不同于单独的、固件式的或集成式的 TPM。 请勿在生产环境中使用软件 TPM。 若要创建使用 TPM 的单个注册,请打开“设备连接”页,选择“单个注册”作为身份验证类型,并选择“TPM”作为身份验证方法。 输入 TPM 认可密钥并保存设备连接信息。

自动注册设备

该方案可让 OEM 大规模制造出可在不事先在应用程序中注册的情况下实现连接的设备。 OEM 生成合适的设备凭据,并在工厂中配置设备。

如需自动注册使用 X.509 证书的设备:

  1. 使用已添加到 X.509 注册组的根证书或中间证书为设备生成叶证书。 使用设备 ID 作为叶证书中的 CNAME。 设备 ID 中可以包含字母、数字和 - 字符。

  2. 作为 OEM,使用设备 ID、生成的 X.509 叶证书和应用程序 ID 范围值刷新每台设备。 设备代码还应发送它所实现的设备模型的模型 ID。

  3. 打开设备时,设备首先连接到 DPS 以检索其 IoT Central 连接信息。

  4. 设备使用来自 DPS 的信息连接到 IoT Central 应用程序并向其注册。

  5. IoT Central 应用程序使用设备发送的模型 ID 将注册的设备分配给设备模板

如需自动注册使用 SAS 令牌的设备:

  1. 从“SAS-IoT-Devices”注册组中复制组主密钥:

    Screenshot that shows the group primary key from SAS IoT Devices enrollment group.

  2. 使用 az iot central device compute-device-key 命令生成设备 SAS 密钥。 使用前面步骤中获取的组主密钥。 设备 ID 中可以包含字母、数字和 - 字符:

    az iot central device compute-device-key --primary-key <enrollment group primary key> --device-id <device ID>
    
  3. 作为 OEM,使用设备 ID、生成的设备 SAS 密钥和应用程序 ID 范围值刷新每台设备。 设备代码还应发送它所实现的设备模型的模型 ID。

  4. 打开设备时,它首先会连接到 DPS 以检索其 IoT Central 注册信息。

  5. 设备使用来自 DPS 的信息连接到 IoT Central 应用程序并向其注册。

  6. IoT Central 应用程序使用设备发送的模型 ID 将注册的设备分配给设备模板

后续步骤

一些建议的后续步骤如下: