如何使用设备预配服务验证 X.509 CA 证书

验证的 X.509 证书颁发机构 (CA) 证书是已上传并注册到预配服务,然后自动验证,或通过服务的所有权证明验证的 CA 证书。

使用登记组时,验证的证书将发挥重要作用。 验证证书所有权可以确保证书上传者拥有该证书的私钥,从而提供一个附加的安全层。 验证可以防止恶意行动者提取中间证书,并使用该证书在其自己的预配服务中创建登记组,从而有效地劫持你的设备,因此,可防止他们探查你的流量。 通过证明证书链中根证书或中间证书的所有权,可以证明你有权针对需要注册为登记组一部分的设备生成叶证书。 出于此原因,在登记组中配置的根证书或中间证书必须是验证的证书,或者在服务中进行身份验证时,必须滚动更新为设备所代表的证书链中的某个已验证证书。 若要详细了解 X.509 证书证明,请参阅 X.509 证书使用 X.509 证书控制设备对预配服务的访问

先决条件

在开始本文中的步骤之前,请准备好以下先决条件:

  • 在 Azure 订阅中创建的 DPS 实例。
  • .cer或 .pem 证书文件。

通过自我证明自动验证中间 CA 或根 CA

如果使用的是你信任的中间或根 CA,并且知道你拥有该证书的完全所有权,则可以自行证明你已验证该证书。​

若要添加自动验证的证书,请按照以下步骤进行操作:

  1. Azure 门户中导航到预配服务,从左侧菜单选择“证书”。

  2. 选择“添加”以添加新证书。

  3. 输入证书的友好显示名称。

  4. 浏览到表示 X.509 证书公共部分的 .cer 或 .pem 文件。 单击“上载” 。

  5. 选中“在上传时将证书状态设置为已验证”旁边的复选框。

    Screenshot that shows uploading a certificate and setting status to verified.

  6. 选择“保存”。

  7. 此时证书显示在证书选项卡中,状态为“已验证”。

    Screenshot that shows the verified certificate after upload.

手动验证中间 CA 或根 CA

将新的中间证书或根 CA 证书上传到 DPS 时,建议自动验证。 但是,如果 IoT 方案需要,仍可以执行所有权证明。

所有权证明涉及以下步骤:

  1. 获取预配服务针对 X.509 CA 证书生成的唯一验证码。 可以从 Azure 门户获取此信息。
  2. 使用验证码作为使用者创建 X.509 验证证书,使用与 X.509 CA 证书关联的私钥对该证书进行签名。
  3. 将签名的验证证书上传到服务。 服务将使用要验证的 CA 证书的公共部分来验证验证证书,从而证明你拥有 CA 证书的私钥。

注册 X.509 证书的公共部分并获取验证码

若要将 CA 证书注册到预配服务并获取可在所有权证明期间使用的验证码,请遵循以下步骤。

  1. 在 Azure 门户中导航到预配服务,从左侧菜单打开“证书”。

  2. 选择“添加”以添加新证书。

  3. 在“证书名称”字段中输入证书的友好显示名称。

  4. 选择文件夹图标,然后浏览到表示 X.509 证书公共部分的 .cer 或 .pem 文件。 选择“打开”。

  5. 收到已成功上传证书的通知后,选择“保存”。

    Screenshot that shows uploading a certificate without automatic verification.

    该证书将显示在“证书资源管理器”列表中。 请注意,此证书的状态为“未验证”。

  6. 选择在上一步骤中添加的证书,以打开其详细信息。

  7. 在证书详细信息中,请注意存在空的“验证码”字段。 选择“生成验证码”按钮。

    Screenshot that shows generating a verification code for proof-of-possession.

  8. 预配服务会创建一个可用于验证证书所有权的验证码。 将此代码复制到剪贴板。

对验证代码进行数字签名,以创建验证证书

现在,需要使用与 X.509 CA 证书关联的私钥(生成签名)对 DPS 中的验证码进行签名。 此步骤称为所有权证明,最终会生成一个签名的验证证书。

Azure 提供了工具和示例来帮助你创建签名的验证证书:

  • Azure IoT 中心 C SDK 提供了 PowerShell (Windows) 和 (Linux) Bash 脚本来帮助你创建用于开发的 CA 证书和叶证书,以及使用验证码执行所有权证明。 可将系统相关的文件下载到工作文件夹,并遵照管理 CA 证书自述文件中的说明执行 CA 证书的所有权证明。
  • Azure IoT 中心 C# SDK 包含组证书验证示例,可用于执行所有权证明。

文档和 SDK 中提供的 PowerShell 与 Bash 脚本依赖于 OpenSSL。 还可以借助 OpenSSL 或其他第三方工具执行所有权证明。

上传已签名的验证证书

在 Azure 门户中将生成的签名作为验证证书上传到预配服务。

  1. 在从中复制验证码的 Azure 门户上的证书详细信息中,选择“验证证书 .pem 或 .cer 文件字段”。 从系统浏览到已签名的验证证书,然后选择“打开”。

  2. 成功上传证书后,选择“验证”。 在“证书”列表中,证书的“状态”会更改为“已验证”。 如果状态未自动更新,请选择“刷新”。

后续步骤