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

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

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

先决条件

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

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

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

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

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

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

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

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

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

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

    显示上传证书和将状态设置为已验证的屏幕截图。

  6. 选择“保存”。

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

    显示上传后的已验证证书的屏幕截图。

手动验证中间 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. 收到已成功上传证书的通知后,选择“保存”。

    显示上传证书但不自动验证的屏幕截图。

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

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

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

    显示为所有权证明生成验证码的屏幕截图。

  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. 成功上传证书后,选择“验证”。 在“证书”列表中,证书的“状态”会更改为“已验证”。 如果状态未自动更新,请选择“刷新”。

后续步骤