Compartilhar via

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

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

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

滚动设备证书涉及更新存储在设备和IoT hub上的证书。 之后,设备可以使用常规预配流程通过设备预配服务(DPS)重新配置IoT hub。

获取新证书

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

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

可通过两种不同的方法获取签名证书。 第一种方法(建议对生产系统使用)是从根证书颁发机构 (CA) 购买签名证书。 这种方法可将安全性绑定到受信任的源。

第二种方法是使用 OpenSSL 之类的工具创建自己的 X.509 证书。 此方法非常适合用于测试 X.509 证书,但在安全性方面不能提供很大的保障。 除非你已准备好充当自己的 CA 提供者,否则请只在测试时使用此方法。

在设备上部署证书

设备上的证书应始终存储在硬件安全模块 (HSM) 等安全位置。 设备证书的替换方式取决于它们最初在设备中创建和安装的方式。

如果从非Microsoft提供程序获取证书,则必须了解证书的滚动方式。 该过程可能包含在你的安排中,也可能是它们提供的单独服务。

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

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

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

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

在 DPS 中更新证书

可以将设备证书手动添加到IoT hub。 证书也可以通过设备预配服务实例实现自动化。 在本文中,我们假设使用设备预配服务实例来支持自动预配。

当设备最初通过自动预配进行预配时,它会启动,并联系预配服务。 预配服务先进行身份验证,然后在IoT hub中使用设备的叶证书作为凭据来创建设备标识,以此作为响应。 然后,预配服务会告知设备其被分配到哪个IoT hub,并且设备使用其叶证书进行身份验证,从而连接到该IoT hub。

将新叶证书替换到设备后,它将无法再连接到IoT hub,因为它使用新证书进行连接。 IoT hub仅识别具有旧证书的设备。 设备连接尝试的结果是“未经授权的”连接错误。 要解决此错误,您必须更新设备的注册表项,以包含设备的新叶证书。 然后,预配服务可以根据需要更新IoT Hub设备注册表信息,以便重新预配设备。

此连接失败的一个可能例外是,在预配服务中为设备创建 注册组 。 在这种情况下,如果未在设备的证书信任链中更新根证书或中间证书,而新证书是注册组定义的信任链的一部分,则设备仍然会被识别。 如果这种情况是作为对安全违规做出的反应而出现的,则至少应禁用组中被视为违规的特定设备证书。 有关更多信息,请参阅禁止特定设备加入 X.509 注册组

如何处理注册条目的更新取决于您是使用个人注册还是团体注册。 另外,建议的过程根据滚动更新证书的原因是安全违规还是证书过期而有所不同。 以下部分介绍了如何处理这些更新。

个人注册证书更新

如果你要滚动更新证书以应对安全违规问题,应立即删除任何已泄密的证书。

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

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

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

  2. 选择“管理注册”。

    Screenshot 显示 Azure portal 中的“管理注册”页面。

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

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

    如果有任何证书泄密,应尽快将其删除。

    如果某个证书即将过期,只要在它过期之后第二个证书仍然有效,你就可以保留这个即将过期的证书。

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

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

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

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

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

滚动更新注册组的证书

若要更新组注册以应对安全违规问题,应立即删除已泄密的根 CA 或中间证书。

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

更新根 CA 证书

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

    显示 Azure portal 中“证书”页的截图。

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

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

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

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

  6. 在“X.509 证书设置”部分,选择新的根 CA 证书以替换已泄密或过期的证书,或者将其添加为辅助证书。

    显示为注册组选择新上传的证书的屏幕截图。

  7. 选择“保存”。

  8. 如果从配置服务中删除了已泄露的证书,只要在IoT hub中仍有该证书对应的设备注册,该证书仍可用于建立设备连接。 可通过两种方法来解决这一问题:

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

    第二种方法是使用重新配置功能将设备重新配置到同一个IoT Hub。 此方法可用于替换IoT hub上的设备注册证书。 有关更多信息,请参见如何重新预配设备

更新中间证书

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

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

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

    如果有任何证书泄密,应尽快将其删除。

    如果某个证书即将过期,只要在它过期之后第二个证书仍然有效,你就可以保留这个即将过期的证书。

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

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

  4. 如果从配置服务中删除了已受损的证书,只要其设备注册仍然存在,该证书仍可用于与IoT hub进行设备连接。 可通过两种方法来解决这一问题:

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

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

重新配置设备

在设备和设备预配服务上更新证书后,设备可以通过联系设备预配服务重新进行预配。

将设备编程为在尝试连接到IoT hub时,如果收到“未授权”错误,则与预配服务联系以进行预配流程,这是重新预配设备的一种简单方法。

另一种方法是让旧证书和新证书在短时间内同时有效,并使用IoT 中心发送命令到设备,让设备通过预配服务重新注册,以更新其IoT 中心连接信息。 由于每个设备的命令处理方式不同,因此需要对设备进行编程,以便它在命令被调用时知道该执行什么操作。 可通过多种方法通过 IoT Hub 命令设备,我们建议使用 direct 方法jobs来启动该过程。

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

禁用证书

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

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

后续步骤