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

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

滚动更新证书是一种安全最佳做法,可以在出现违规时帮助保护系统。 作为假设违规方法的一部分,Azure 提倡实施反应式安全流程及预防措施。 这些安全流程应该包括设备证书的滚动更新。 滚动更新证书的频率取决于解决方案的安全需求。 其解决方案涉及到高度敏感数据的客户可以每日滚动更新证书,而其他客户则可以每隔数年滚动更新其证书。

滚动更新设备证书涉及到更新存储在设备和 IoT 中心上的证书。 此后,该设备可以使用设备预配服务 (DPS) 的一般性预配过程,在 IoT 中心重新预配自身。

获取新证书

可通过多种方法获取 IoT 设备的新证书。 这些方法包括从设备工厂获取证书、生成自己的证书,以及让第三方管理证书的创建。

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

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

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

在设备上滚动更新证书

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

如果证书是从第三方获取的,则必须深入了解第三方如何滚动更新其证书。 滚动更新流程可能包含在双方的协定中,也可能单独作为一种服务提供。

若要管理自己的设备证书,必须构建更新证书的管道。 确保新旧叶证书具有相同的公用名 (CN)。 如果 CN 相同,设备就可以重新预配自身,而无需创建重复的注册记录。

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

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

  • 你可以保留每台设备的 CSR,并使用它从 PKI CA 获取新的设备证书。

在 DPS 中滚动更新证书

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

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

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

如果在预配服务中为设备创建了注册组,则上述连接尝试可能不会失败。 在这种情况下,如果不是滚动更新设备证书信任链中的根证书或中间证书,并且新证书是注册组中定义的信任链的一部分,则该设备可以识别。 如果这种情况是作为对安全违规做出的反应而出现的,则至少应禁用组中被视为违规的特定设备证书。 有关详细信息,请参阅禁用注册组中的特定设备

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

滚动更新单独注册的证书

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

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

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

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

  2. 选择“管理注册”。

    Screenshot that shows the Manage enrollments page in the Azure portal.

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

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

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

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

    Screenshot that shows how to remove a certificate and upload new ones.

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

  6. 如果从预配服务中删除了已泄密的证书,只要设备的设备注册依然存在,就仍可以使用该证书将设备连接到 IoT 中心。 可通过两种方法来解决这一问题:

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

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

滚动更新注册组的证书

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

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

更新根 CA 证书

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

    Screenshot that shows the certificates page.

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

  3. 遵循配置已验证的 CA 证书中所述的步骤,添加并验证新的根 CA 证书。

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

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

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

    Screenshot that shows selecting a new uploaded certificate for an enrollment group.

  7. 选择“保存”。

  8. 如果从预配服务中删除了已泄密的证书,只要设备的设备注册依然存在,就仍可以使用该证书将设备连接到 IoT 中心。 可通过两种方法来解决这一问题:

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

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

更新中间证书

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

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

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

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

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

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

    Screenshot that shows replacing an intermediate certificate for an enrollment group.

  4. 如果从预配服务中删除了已泄密的证书,只要设备的设备注册依然存在,就仍可以使用该证书将设备连接到 IoT 中心。 可通过两种方法来解决这一问题:

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

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

重新预配设备

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

对设备进行编程以重新预配的一种简单方法是,如果设备在尝试连接到 IoT 中心时收到“未授权”错误,则对设备进行编程,使其联系预配服务以完成预配流程。

另一种方法是使新旧证书的有效期保持短时间的重叠,并使用 IoT 中心向设备发送一条命令,让它们通过预配服务重新注册,以更新其 IoT 中心连接信息。 由于每个设备可能以不同的方式处理命令,因此,必须适当地为设备编程,使其知道在调用命令时要执行哪种操作。 可以使用多种方法来通过 IoT 中心指挥设备,而我们建议使用直接方法作业来启动该过程。

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

禁用证书

在响应安全违规时,可能需要禁用设备证书。 若要禁用设备证书,请禁用目标设备/证书的注册条目。 有关详细信息,请参阅管理取消注册一文中的“禁用设备”。

将证书包含为已禁用注册条目的一部分后,使用该证书注册到 IoT 中心的任何尝试都会失败,即使已在另一个注册条目中启用该证书。

后续步骤