如何使用设备预配服务验证 X.509 CA 证书
验证的 X.509 证书颁发机构 (CA) 证书是已上传并注册到预配服务,然后自动验证,或通过服务的所有权证明验证的 CA 证书。
使用登记组时,验证的证书将发挥重要作用。 验证证书所有权可以确保证书上传者拥有该证书的私钥,从而提供一个附加的安全层。 验证可以防止恶意行动者提取中间证书,并使用该证书在其自己的预配服务中创建登记组,从而有效地劫持你的设备,因此,可防止他们探查你的流量。 通过证明证书链中根证书或中间证书的所有权,可以证明你有权针对需要注册为登记组一部分的设备生成叶证书。 出于此原因,在登记组中配置的根证书或中间证书必须是验证的证书,或者在服务中进行身份验证时,必须滚动更新为设备所代表的证书链中的某个已验证证书。 若要详细了解如何使用 X.509 证书进行证明,请参阅 X.509 证书。
先决条件
在开始本文中的步骤之前,请准备好以下先决条件:
- 在 Azure 订阅中创建的 DPS 实例。
- .cer或 .pem 证书文件。
通过自我证明自动验证中间 CA 或根 CA
如果使用的是你信任的中间或根 CA,并且知道你拥有该证书的完全所有权,则可以自行证明你已验证该证书。
若要添加自动验证的证书,请按照以下步骤进行操作:
选择“添加”以添加新证书。
输入证书的友好显示名称。
浏览到表示 X.509 证书公共部分的 .cer 或 .pem 文件。 单击“上载” 。
选中“在上传时将证书状态设置为已验证”旁边的复选框。
选择“保存”。
此时证书显示在证书选项卡中,状态为“已验证”。
手动验证中间 CA 或根 CA
将新的中间证书或根 CA 证书上传到 DPS 时,建议自动验证。 但是,如果 IoT 方案需要,仍可以执行所有权证明。
所有权证明涉及以下步骤:
- 获取预配服务针对 X.509 CA 证书生成的唯一验证码。 可以从 Azure 门户获取此信息。
- 使用验证码作为使用者创建 X.509 验证证书,使用与 X.509 CA 证书关联的私钥对该证书进行签名。
- 将签名的验证证书上传到服务。 服务将使用要验证的 CA 证书的公共部分来验证验证证书,从而证明你拥有 CA 证书的私钥。
注册 X.509 证书的公共部分并获取验证码
若要将 CA 证书注册到预配服务并获取可在所有权证明期间使用的验证码,请遵循以下步骤。
在 Azure 门户中导航到预配服务,从左侧菜单打开“证书”。
选择“添加”以添加新证书。
在“证书名称”字段中输入证书的友好显示名称。
选择文件夹图标,然后浏览到表示 X.509 证书公共部分的 .cer 或 .pem 文件。 选择“打开”。
收到已成功上传证书的通知后,选择“保存”。
该证书将显示在“证书资源管理器”列表中。 请注意,此证书的状态为“未验证”。
选择在上一步骤中添加的证书,以打开其详细信息。
在证书详细信息中,请注意存在空的“验证码”字段。 选择“生成验证码”按钮。
预配服务会创建一个可用于验证证书所有权的验证码。 将此代码复制到剪贴板。
对验证代码进行数字签名,以创建验证证书
现在,需要使用与 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 门户中将生成的签名作为验证证书上传到预配服务。
在从中复制验证码的 Azure 门户上的证书详细信息中,选择“验证证书 .pem 或 .cer 文件字段”。 从系统浏览到已签名的验证证书,然后选择“打开”。
成功上传证书后,选择“验证”。 在“证书”列表中,证书的“状态”会更改为“已验证”。 如果状态未自动更新,请选择“刷新”。
后续步骤
- 若要了解如何使用门户创建登记组,请参阅使用 Azure 门户管理设备登记。
- 若要了解如何使用服务 SDK 创建登记组,请参阅使用服务 SDK 管理设备登记。