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

如何滚动更新 X.509 设备证书

在 IoT 解决方案的生命周期内,需要滚动更新证书。 滚动证书的两个主要原因是安全漏洞和证书过期。

滚动证书是一种安全最佳做法,可帮助保护系统(如果存在违规)。 作为 假设违规方法的一部分,Microsoft主张有必要制定反应性安全流程以及预防措施。 这些安全流程应该包括设备证书的滚动更新。 滚动更新证书的频率取决于解决方案的安全需求。 具有涉及高度敏感数据的解决方案的客户可能会每天滚动更新证书,而其他客户则每隔几年滚动一次证书。

滚动设备证书涉及更新存储在设备和 IoT 中心的证书。 之后,设备可以使用设备预配服务 (DPS) 的正常预配过程,在 IoT 中心重新预配自身。

获取新证书

可通过多种方式获取 IoT 设备的新证书,包括从设备工厂获取证书、生成自己的证书,以及让非Microsoft提供程序为你管理证书创建。

证书可以相互签名,形成从根 CA 证书到 叶证书的信任链。 签名证书是用于签署信任链末尾的叶证书的证书。 签名证书可以是根 CA 证书,也可以是信任链中的中间证书。 有关详细信息,请参阅 X.509 证书证明

可通过两种不同的方法来获取签名证书。 用于生产系统,建议的第一种方法是从根证书颁发机构(CA)购买数字签名证书。 这样一来,将安全性锚定在受信任的源头上。

第二种方法是使用 OpenSSL 等工具创建自己的 X.509 证书。 此方法非常适合用于测试 X.509 证书,但在安全性方面几乎没有保障。 建议仅使用此方法进行测试,除非已准备好充当自己的 CA 提供商。

在设备上滚动更新证书

设备上的证书应始终存储在 硬件安全模块(HSM)等安全位置。 滚动更新设备证书的方式主要取决于它们的创建方式以及在设备中的安装方式。

如果证书是从非 Microsoft 提供商获取的,则必须深入了解这些提供商如何滚动更新其证书。 该过程可能包含在你的安排中,也可能是它们提供的单独服务。

如果要管理自己的设备证书,则必须生成自己的管道来更新证书。 请确保旧叶证书和新叶证书具有相同的公用名(CN)。 通过具有相同的公用名 (CN),设备可以重新自我配置,而无需创建重复的注册记录。

在设备上安装新证书的机制通常涉及以下方法之一:

  • 可以触发受影响的设备,将新的证书签名请求(CSR)发送到 PKI 证书颁发机构(CA)。 在这种情况下,每个设备都可能直接从 CA 下载其新设备证书。

  • 可以从每个设备保留 CSR,并使用该证书从 PKI CA 获取新的设备证书。 在这种情况下,需要使用安全的 OTA 更新服务(例如 IoT 中心的设备更新)将新证书推送到固件更新中的每个设备。

在 DPS 中轮换证书

可以将设备证书手动添加到 IoT 中心。 还可以使用设备预配服务实例对证书进行自动化处理。 在本文中,我们假设使用设备预配服务实例来支持自动预配。

当设备最初通过自动预配进行预配时,它会启动,并联系预配服务。 预配服务通过以下方式做出响应:执行标识检查,然后使用设备的叶证书作为凭据,在 IoT 中心创建设备标识。 然后,预配服务会告知设备它分配到的 IoT 中心,然后设备使用其叶证书进行身份验证并连接到 IoT 中心。

通过滚动更新获得新叶证书后,设备无法再连接到 IoT 中心,因为它使用新证书进行连接。 IoT 中心仅识别具有旧证书的设备。 设备连接尝试的结果是“未经授权的”连接错误。 若要解决此错误,必须更新设备的注册条目,以采用设备的新叶证书。 然后,预配服务可以根据需要在重新预配设备时更新 IoT 中心设备注册表信息。

此连接失败的一个可能例外是,在预配服务中为设备创建 注册组 。 在这种情况下,如果不是滚动更新设备证书信任链中的根证书或中间证书,并且新证书是注册组中定义的信任链的一部分,则该设备可以识别。 如果此方案作为对安全漏洞的反应而出现,则至少应禁止组中被视为违反的特定设备证书。 有关详细信息,请参阅 禁止来自 X.509 注册组的特定设备

如何处理注册条目的更新取决于您是使用个人注册还是团体注册。 此外,根据您是因安全漏洞还是证书到期而更新证书,推荐的程序会有所不同。 以下部分介绍如何处理这些更新。

为个人注册签发证书

如果要滚动更新证书以响应安全漏洞,应立即删除任何已泄露的证书。

如果滚动更新证书的目的是处理证书过期问题,则应使用辅助证书配置,以减少设备尝试预配时造成的停机时间。 以后,当辅助证书即将过期,因此需要滚动更新时,可以换用主要证书配置。 以这种方式在主要证书与辅助证书之间轮换可以减少设备尝试预配时造成的停机时间。

可在“管理注册”页上更新已滚动更新的证书的注册条目。 若要访问该页面,请执行以下步骤:

  1. 登录到 Azure 门户,并导航到包含您设备注册条目的设备预配服务实例。

  2. 选择“ 管理注册”。

    显示 Azure 门户中的“管理注册”页的屏幕截图。

  3. 选择 “单个注册 ”选项卡,然后从列表中选择注册 ID 条目。

  4. 如果要删除现有证书,请检查 “删除”或“替换主/辅助证书 ”复选框。 选择“文件文件夹”图标以浏览并上传新证书。

    如果任何证书遭到入侵,应尽快将其删除。

    如果其中一个证书即将过期,只要第二个证书在该日期后仍然处于活动状态,就可以保留该证书。

    显示如何删除证书并上传新证书的屏幕截图。

  5. 完成后选择“ 保存 ”。

  6. 如果从预配服务中删除了已泄露的证书,只要存在设备注册,该证书仍可用于与 IoT 中心建立设备连接。 可以通过以下两种方式解决:

    第一种方法是手动导航到 IoT 中心,并立即删除与已泄露的证书关联的设备注册。 然后,当设备再次使用更新后的证书进行配置时,将创建新的设备注册记录。

    第二种方法是使用重新预配支持将设备重新预配到同一 IoT 中心。 此方法可用于替换 IoT 中心上的设备注册证书。 有关详细信息,请参阅 如何重新预配设备

滚动更新注册组的证书

若要更新组注册以响应安全漏洞,应立即删除已泄露的根 CA 或中间证书。

如果滚动更新证书的目的是处理证书过期问题,则应使用辅助证书配置,以确保设备尝试预配时不会造成停机。 稍后,当次要证书即将过期且需要更新时,可以轮换为使用主要配置。 以这种方式在主要证书与辅助证书之间轮换可以确保设备尝试预配时不会造成停机。

更新根 CA 证书

  1. 从设备预配服务实例导航菜单的“设置”部分选择“证书”。

    显示 Azure 门户中的“证书”页的屏幕截图。

  2. 从列表中选择已泄露或过期的证书,然后选择“ 删除”。 输入证书名称并选择“ 确定”确认删除。

  3. 按照 “如何使用设备预配服务验证 X.509 CA 证书” 中所述的步骤添加和验证新的根 CA 证书。

  4. 从设备预配服务实例导航菜单的“设置”部分选择“管理注册”,然后选择“注册组”选项卡。

  5. 从列表中选择注册组名称。

  6. “X.509 证书设置 ”部分中,选择新的根 CA 证书来替换已泄露或过期的证书,或添加为辅助证书。

    屏幕截图显示选择新上传证书以用于注册组。

  7. 选择“保存”

  8. 如果从预配服务中删除了已泄露的证书,只要存在设备的注册,该证书仍可用于与 IoT 中心建立设备连接。 可以通过以下两种方式解决:

    第一种方法是手动导航到 IoT 中心,并立即删除与已泄露的证书关联的设备注册。 此后,当设备再次使用更新的证书进行预配时,将为每个证书创建新的设备注册。

    第二种方法是使用重新预配支持将设备重新预配到同一 IoT 中心。 此方法可用于替换 IoT 中心上的设备注册证书。 有关详细信息,请参阅 如何重新预配设备

更新中间证书

  1. 从设备预配服务实例导航菜单的“设置”部分选择“管理注册”,然后选择“注册组”选项卡。

  2. 从列表中选择组名称。

  3. 如果要删除现有证书,请检查 “删除”或“替换主/辅助证书 ”复选框。 选择“文件文件夹”图标以浏览并上传新证书。

    如果任何证书遭到入侵,应尽快将其删除。

    如果其中一个证书即将过期,只要第二个证书在该日期后仍然处于活动状态,就可以保留该证书。

    应使用已添加到预配服务的已验证根 CA 证书对每个中间证书进行签名。 有关详细信息,请参阅 X.509 证书证明

    显示替换注册组的中间证书的屏幕截图。

  4. 如果从预配服务中删除了已泄露的证书,只要存在设备的注册,该证书仍可用于与 IoT 中心建立设备连接。 可以通过以下两种方式解决:

    第一种方法是手动导航到 IoT 中心,并立即删除与已泄露的证书关联的设备注册。 此后,当设备再次使用更新的证书进行预配时,将为每个证书创建新的设备注册。

    第二种方法是使用重新预配支持将设备重新预配到同一 IoT 中心。 此方法可用于替换 IoT 中心上的设备注册证书。 有关详细信息,请参阅 如何重新预配设备

重新预配设备

在设备和设备预配服务上滚动更新证书后,设备可以通过联系设备预配服务来重新预配自身。

设备重新预配的简单编程方法之一是,当设备在尝试连接到 IoT 中心时如果收到“未授权”错误,使设备联系预配服务以经历预配流。

另一种方法是让旧证书和新证书在短重叠时有效,并使用 IoT 中心将命令发送到设备,让他们通过预配服务重新注册,以更新其 IoT 中心连接信息。 由于每个设备都可以以不同的方式处理命令,因此必须对设备进行编程,以了解在调用命令时要执行的作。 可通过多种方式通过 IoT 中心命令设备,我们建议使用 直接方法作业 来启动该过程。

重新预配完成后,设备可以使用新证书连接到 IoT 中心。

禁用证书

为了响应安全漏洞,可能需要禁止设备证书。 若要禁止设备证书,请禁用目标设备/证书的注册条目。 有关详细信息,请参阅 如何从 Azure IoT 中心设备预配服务取消注册或撤销设备

一旦证书被包含在禁用的注册条目中,即使该证书在其他注册条目中是启用的,任何尝试使用该证书在 IoT 中心注册都会失败。

后续步骤