Microsoft 安全启动证书失效指南

由于多项 Microsoft 安全启动证书将于 2026 年过期,本文档将提供相关指南,说明如何更新 Compute Engine 安全强化型虚拟机实例,以信任 UEFI(统一可扩展固件接口)安全启动的更新版 Microsoft 安全启动证书。即将过期的两个最关键的证书是 Microsoft Corporation UEFI CA 2011(将于 2026 年 6 月 27 日过期)和 Microsoft Windows Production PCA 2011(将于 2026 年 10 月 19 日过期)。前者用于对第三方引导加载程序(例如 Linux Shim)进行签名,后者用于对 Windows 引导加载程序进行签名。

UEFI 安全启动是一项安全标准,安全强化型虚拟机使用该标准来确保在虚拟机启动过程中仅运行可信的软件和固件。为了在各种操作系统中支持安全启动,Microsoft 会管理 UEFI 证书,并将其存储在实例固件中的密钥交换密钥 (KEK) 和允许的签名数据库 (db) 变量中。

安全启动证书和失效日期

证书名称 角色 到期日期
Microsoft Corporation UEFI CA 2011 对第三方引导加载程序(例如 Linux Shim)进行签名 2026 年 6 月 27 日
Microsoft Windows Production PCA 2011 对 Windows 引导加载程序进行签名 2026 年 10 月 19 日
Microsoft Corporation KEK CA 2011 用于更新 DB 和 DBX 2026 年 6 月 24 日

只有当您的计算实例同时满足以下两个强制性前提条件时,此证书过期才会对您产生影响:

  1. 创建日期:您在 2025 年 11 月 7 日之前(Compute Engine 更新了 UEFI 固件中的默认安全启动证书)创建了计算实例,并且尚未更新该实例。
  2. 安全启动状态:您已在实例上启用安全启动。 Google Cloud 在创建安全强化型虚拟机实例时,默认情况下不会启用安全启动。

如果您在 2025 年 11 月 7 日或之后创建实例,则这些实例的固件变量中已包含更新后的证书,前提是它们使用的映像依赖于默认证书集。

如果您的实例不满足上述两个前提条件,则证书过期不会影响该实例,您无需采取任何行动。

本文档介绍了如何识别受影响的实例并执行必要的更新。

Google Cloud 已于 2025 年 11 月 7 日完成新证书的推出。如果您在相应日期或之后创建的实例所使用的映像依赖于默认证书集,则这些实例的 NVRAM/固件变量(dbKEK)中会包含更新后的证书,无需进一步操作。不过,您在此日期前几周内创建的某些实例也可能包含新证书。如需检查系统是否为最新版本,请使用本文档验证部分中的命令。

注意:安全启动证书过期不会影响以下方面:

  • 未启用安全启动的实例。请注意,如果您使用 vTPM 平台配置寄存器(特别是 PCR7)来密封 Secret,即使停用了安全启动,对 UEFI 变量的任何更新或重新创建实例仍会改变 PCR7 测量结果,不过此类配置非常少见。
  • 运行 Container-Optimized OS (COS) 的实例。
  • 您提供自己的安全启动平台密钥 (PK) 或密钥注册密钥 (KEK) 的实例。

对于 2025 年 11 月 7 日之前创建的没有更新证书的计算实例,请按照 KEK 和数据库更新指南更新证书;如果出于任何原因无法更新,请考虑重新创建实例。

安全启动证书过期对安全强化型虚拟机的影响

如果启用,安全强化型虚拟机将使用 UEFI 固件强制执行安全启动,该固件会维护一组受信任的证书(在 db 变量中)来验证启动序列二进制文件的签名。例如,如果某项操作系统更新将引导加载程序替换为仅由 Microsoft UEFI CA 2023 签名的引导加载程序,而计算实例的固件不信任此证书的授权机构,则安全启动验证会失败,并且安全启动会停止启动过程。

如需详细了解此过渡,请参阅 Microsoft 和其他操作系统供应商提供的指南:

操作系统影响

如果您在 2025 年 11 月 7 日之前创建的安全强化型虚拟机实例上启用了安全启动,建议您确保已安装 2023 年证书;否则,如果您应用包含仅由 Microsoft UEFI CA 2023 年证书签名(而未与 2011 年证书进行双重签名)的引导加载程序的更新,计算实例将面临启动问题。如果您不采取任何措施,可能无法应用未来的引导加载程序或内核更新,这些更新包含仅使用 2023 年证书签名的二进制文件。请注意,由于操作系统供应商计划在可预见的未来使用 2011 年和 2023 年证书对引导加载程序和 shim 更新进行双重签名,因此预计不会立即出现启动失败或更新被阻止的情况。 对于 2025 年 11 月 7 日之前创建的计算实例:如果 Windows 客户未应用证书更新,则可能会在系统事件日志中看到事件 ID 1801(“安全启动 CA/密钥需要更新”)。

  • Google 提供的公开映像:按照 KEK 和数据库更新指南更新数据库和 KEK 证书。或者,考虑重新创建 2025 年 11 月 7 日之前创建的所有长时间运行的虚拟机。
  • 自定义映像或导入的映像:绝大多数自定义映像或导入的映像都依赖于默认的安全启动证书。如果您在创建映像时未明确替换 dbKEK 安全启动变量,则映像会使用默认密钥集,并且无需在映像级别执行任何操作。当您基于任何依赖这些默认设置的映像创建实例时,Compute Engine 会自动提供更新后的证书。

    只有在映像构建流程中,您在映像元数据中明确定义了自定义 dbKEK 安全启动变量(例如,将第三方安全供应商的证书与默认的 Microsoft 证书一起包含在内)时,才需要采取行动。由于指定自定义 dbKEK 变量会完全覆盖默认值(并且系统会忽略默认公钥),因此您的自定义变量可能缺少更新后的“Microsoft UEFI CA 2023”或 2023 KEK 证书。如果您的自定义映像配置排除了这些更新后的证书,您必须重新创建或更新 Shielded 映像以纳入这些证书。如需了解相关说明,请参阅创建自定义安全强化型虚拟机映像

如果您有在 2025 年 11 月 7 日之前创建且启用了安全启动的计算实例,请在规划更新路径之前查看以下要求、限制和复杂因素:

  • 更新前要求
    • 验证恢复密钥访问权限:如果您的实例使用 FDE(包括 Windows 上的 BitLocker 或 Linux 上的 LUKS),您必须确保在更新证书或重新创建实例之前可以访问恢复密钥。修改 UEFI 变量会改变启动测量结果,并触发恢复提示。
    • 管理 vTPM Secret:如果您的实例使用 vTPM 平台配置寄存器(特别是 PCR7)来密封 Secret,则必须在更新之前解封或备份这些 Secret,以免永久失去访问权限。
  • 复杂因素和边界
    • 更新顺序要求:为防止 CA 验证失败和系统启动循环,您必须先安装新的 dbKEK 证书,然后再应用新的内核或 shim 更新。
    • 固件回滚:将实例恢复到 2025 年 11 月 7 日之前捕获的旧版机器映像会恢复旧固件,并移除对 2023 年证书的信任。如果您回滚,则必须重新应用证书更新。

如需详细了解时间表、审核步骤和迁移流程,请查看以下说明。

对特定访客配置的影响

只有当您的实例同时满足以下两个强制性前提条件(创建时间早于 2025 年 11 月 7 日,且已启用安全启动)时,才能了解证书过期对每种配置的影响:

  • vTPM PCR 密钥封装
    • 何时会成为一个因素:当您使用 vTPM 平台配置寄存器(特别是 PCR7)来密封 Secret(例如解密密钥)时。
    • 影响:更新安全启动证书(无论是使用 KEK 和 db 更新指南还是通过从磁盘快照重新创建实例)会修改 UEFI 变量,从而在下次启动时更改 PCR7 测量值。除非您先在更新之前解封或备份这些密钥,然后在更新之后将其重新封装到新的 PCR7 值,否则此变更会阻止 Guest 操作系统或应用解封或解密这些密钥。
    • 不受影响的情况:如果您在 2025 年 11 月 7 日或之后基于依赖默认证书的映像创建了虚拟机,则无需更新证书,PCR7 保持不变,并且密钥密封功能正常运行。
  • 使用 BitLocker 或虚拟安全模式 (VSM) 的 Windows 计算实例
    • 何时成为一个因素:当您的 Windows 虚拟机使用 BitLocker 全磁盘加密或 VSM 时,这两者都信任 UEFI 安全启动和 PCR7 来封印其加密密钥。
    • 影响:修改 UEFI 安全启动证书或通过快照重新创建实例会更改 PCR7 启动测量值。在后续重启时,BitLocker 会检测到配置更改,无法自动释放密钥,并启动到 BitLocker 恢复屏幕,要求提供恢复密钥。
    • 补救措施:在更新证书或迁移实例之前,您必须验证自己是否拥有 BitLocker 恢复密钥。之后,请按照在 Windows 上更新 db 和 KEK 中的指南操作。
    • 不受影响的情况:证书过期不会影响未启用 BitLocker 或 VSM 的 Windows 实例,也不会影响未启用安全启动的 Windows 实例。
  • 使用 FDE 的 Linux 虚拟机
    • 何时成为一个因素:当您的 Linux 实例使用 FDE(例如 LUKS)时,您会将解密密钥密封到 vTPM PCR(具体为 PCR7)。
    • 影响:更新安全启动证书或重新创建虚拟机会更改 PCR7,从而阻止启动卷的自动解密。系统在启动期间停止,并提示您输入解密口令。
    • 补救措施:在运行更新之前,请确认您拥有恢复口令或密钥。在更新之前,从 TPM 解绑或解除密封 LUKS 密钥,并在完成更新后,将这些密钥重新绑定或重新密封到新的 PCR7 值。
    • 不受影响的情况:证书过期不会影响未使用 FDE 或 vTPM 密封的 LUKS 解密的 Linux 虚拟机,也不会影响未启用安全启动的 Linux 虚拟机。
  • 回滚到 2025 年 11 月之前的机器映像的实例
    • 何时会成为一个因素:当您将虚拟机恢复或回滚到 2025 年 11 月 7 日之前捕获的、启用了安全启动的机器映像时。
    • 影响:回滚后的实例会恢复较旧的 UEFI 固件配置和证书存储区,其中缺少 2023 年证书。这会导致实例在后续启动加载程序更新后容易出现启动失败,需要您重新应用证书更新。
    • 不受影响的情况:如果您停用了安全启动,或者您在 2025 年 11 月 7 日或之后通过依赖默认证书的映像创建了机器映像,那么回滚到机器映像不会影响实例。

确定受影响的计算实例并规划更新

在整个 2026 年,我们建议您确定受影响的计算实例,并采取以下步骤为更新做好准备:

  1. 确定实例:您可以使用 gcloud compute instances list 命令来确定启用了安全启动且是在截止日期之前创建的实例:

    gcloud compute instances list \
    --filter="creationTimestamp < '2025-11-07' AND shieldedInstanceConfig.enableSecureBoot=true" \
    --format="table(name, zone, creationTimestamp, shieldedInstanceConfig.enableSecureBoot:label=SECURE_BOOT)"
    
  2. 检查自定义变量(可选):如果您使用自定义或导入的映像,请验证它们是否明确定义了自定义 dbKEK 安全启动变量(完全替换默认变量)。如果它们依赖于默认证书,则无需在映像级别执行任何操作:

    • 如需检查虚拟机实例,请运行以下命令:

      gcloud compute instances describe INSTANCE_NAME \
          --zone=ZONE \
          --format="yaml(shieldedInstanceInitialState)"
      
    • 如需检查源磁盘映像,请运行:

      gcloud compute images describe IMAGE_NAME \
          --format="yaml(shieldedInstanceInitialState)"
      

    如果输出为空或返回 null,则表示相应实例或映像使用默认证书,无需在映像级别执行任何操作。

  3. 确保数据完整性:在继续进行任何更改之前,请确保您拥有最新的数据备份,并且可以访问 FDE 或 BitLocker 恢复密钥。

  4. 更新证书:按照 KEK 和数据库更新指南更新数据库和 KEK 证书。或者,按照从磁盘快照重新创建计算实例中的说明,迁移到您在 2025 年 11 月 7 日或之后创建的计算实例,该实例包含 2023 年证书(前提是新实例使用的映像依赖于默认证书)。

通过磁盘快照重新创建计算实例

当您截取磁盘快照并基于该快照创建新实例时,新的计算实例会继承一个全新的固件 (vTPM/NVRAM) 状态,该状态信任更新后的默认设置并清除旧证书。

在从快照重新创建计算实例之前,请确保客户机操作系统已安装所有必要的更新(例如 Windows 的相关 Microsoft KB 或 Linux 发行版的最新 Shim),以信任 2023 年证书。

您可以使用以下 gcloud 命令序列来管理此迁移:

  1. 确定启动磁盘:确定附加到源计算实例的启动磁盘的名称:

    SOURCE_DISK=$(gcloud compute instances describe SOURCE_INSTANCE_NAME \
        --zone=ZONE \
        --format="value(disks[0].source.basename())")
    
  2. 创建磁盘快照:截取该启动磁盘的快照。为确保最佳数据完整性,请在运行此命令之前停止计算实例:

    gcloud compute disks snapshot $SOURCE_DISK \
        --snapshot-names="migration-snapshot-$(date +%s)" \
        --zone=ZONE \
        --storage-location=REGION
    
  3. 创建新的计算实例:使用快照作为启动源来预配新的计算实例。如果源实例上启用了安全启动,请添加 --shielded-secure-boot 标志以在新实例上启用安全启动。

    gcloud compute instances create NEW_INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --create-disk=name=NEW_DISK_NAME,source-snapshot=SNAPSHOT_NAME,boot=yes \
        --shielded-secure-boot
    

注意:除非静态分配并专门重新分配,否则使用此方法预配的实例会获得新的内部和外部 IP 地址。实例级元数据、标记和服务账号不会自动复制,必须在重新创建时明确配置。

验证

更新计算实例的固件和操作系统后,您可以验证 2023 年证书是否存在。如果 KEKdb 变量均显示存在 2023 年证书,则表示您的实例是最新的,无需采取进一步行动。

Linux

在 Linux 上,您可以使用 efitools 软件包中的 efi-readvar 命令来验证签名数据库,也可以使用 mokutil(在 efitools 不可用的发行版上,例如 RHEL 8/9)。

方法 1:使用 efi-readvar

  1. 如果不存在 efi-readvar,请安装 efitools 软件包。如需在 Linux 上安装,请运行适合您所用发行版的命令:

    Debian/Ubuntu

    sudo apt update && sudo apt install efitools
    

    RHEL/CentOS/Fedora(仅限 Fedora;efitools 在 RHEL/CentOS 代码库中不可用)

    sudo yum install efitools
    

    SLES

    sudo zypper install efitools
    
  2. 检查 KEKdb 变量中是否存在证书:

    sudo efi-readvar -v KEK | grep "KEK 2K CA 2023"
    sudo efi-readvar -v db | grep "UEFI CA 2023"
    

方法 2:使用 mokutil

在 Red Hat Enterprise Linux (RHEL) 等无法使用 efitools 的发行版上,请使用默认安装的 mokutil 实用程序:

sudo mokutil --kek | grep "KEK 2K CA 2023"
sudo mokutil --db | grep "UEFI CA 2023"

Windows (PowerShell)

在管理员 PowerShell 提示符下运行以下命令。每条命令都应返回 True

# Check for Microsoft KEK 2K CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI KEK).bytes) -match 'Microsoft Corporation KEK 2K CA 2023'

# Check for UEFI CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'UEFI CA 2023'

# Confirm general Secure Boot enrollment state
Confirm-SecureBootUEFI

问题排查

如果实例在 2026 年 6 月之后因安全启动错误而无法启动,请尝试以下任一选项来恢复实例:

  • 暂时停用安全启动:这样一来,您就可以启动实例来应用更新。

    注意:停用安全启动会更改 PCR 值,尤其是 PCR7,这可能会影响密钥封装或磁盘加密功能。

    如需停用安全启动,请运行以下命令:

    gcloud compute instances update INSTANCE_NAME --no-shielded-secure-boot
    

    在将必要的更新应用于引导加载程序/shim 后,重新启用安全启动:

    gcloud compute instances update INSTANCE_NAME --shielded-secure-boot
    
  • 从备份恢复:从启动问题开始之前创建的机器映像恢复实例。

  • 重新创建实例:重新创建实例并从快照恢复数据。

如果您仍遇到问题或需要帮助,请与 Cloud Customer Care 联系。

常见问题解答 (FAQ)

本部分解答了与 Microsoft 安全启动证书过期相关的常见问题。

安全启动证书何时过期?

Microsoft 的安全启动证书将于 2026 年过期。具体而言:

  • 即将过期的两个最关键的证书是 Microsoft Corporation UEFI CA 2011(2026 年 6 月过期),用于对 Linux Shim 等第三方引导加载程序进行签名;以及 Microsoft Windows Production PCA 2011(2026 年 10 月过期),用于对 Windows 引导加载程序进行签名。

谁会受到证书过期影响?

只有当您的计算实例同时满足以下两个强制性前提条件时,此证书过期才会对您产生影响:

  1. 您是在 2025 年 11 月 7 日之前创建的实例,当时 Compute Engine 更新了 UEFI 固件中的默认安全启动证书,但您尚未更新该实例。
  2. 您已在实例上启用安全启动。

如果您使用依赖于默认证书集的映像创建实例,那么在 2025 年 11 月 7 日当天或之后创建的实例不会受到影响。

如果您的实例同时满足这两个前提条件,则在特定情况下,证书过期会影响以下配置:

  • vTPM PCR 密钥密封:如果实例使用虚拟可信平台模块 (vTPM) 平台配置寄存器(具体为 PCR7)来密封加密密钥或密钥。
  • Windows BitLocker / VSM:如果您的 Windows 实例使用 BitLocker 磁盘加密或虚拟安全模式 (VSM) 并启用安全启动。
  • Linux FDE:如果您的 Linux 实例使用您密封到 vTPM PCR(特别是 PCR7)的 FDE。
  • 回滚实例:如果您将虚拟机恢复或回滚到 2025 年 11 月 7 日之前创建的机器映像。

如需详细了解每种配置的影响和补救措施,请参阅对特定 guest 配置的影响

哪些用户不受证书过期影响?

如果符合以下任一条件,证书过期不会对您产生影响:

  • 安全启动已停用:如果安全强化型虚拟机实例未启用安全启动,则不会验证或使用即将过期的 UEFI 证书。“安全启动”默认处于停用状态。不过,请注意,如果您使用 vTPM 平台配置寄存器(尤其是 PCR7)来密封 Secret,即使禁用了安全启动,对 UEFI 变量的任何更新或重新创建实例仍会改变 PCR7 测量结果,尽管此类配置非常罕见。
  • 创建于 2025 年 11 月 7 日或之后:您是在此日期或之后创建的实例,因此其固件已包含更新后的 2023 年证书,前提是您是从依赖于默认证书集的映像创建的实例。
  • 运行 Container-Optimized OS (COS):这些证书更新不会影响 COS 环境。
  • 自定义 PK、KEK 或 db 变量:如果您明确定义并管理自己的自定义安全启动 PKKEKdb 变量,而不依赖于默认的 Microsoft UEFI 证书,那么默认证书的过期不会对您造成影响。不过,您需要负责更新和维护自己的证书。

此到期时间是否会影响 Managed Service for Apache Spark(以前称为 Dataproc)、Dataflow 或 Vertex AI Workbench 实例?

此证书过期不会影响 Dataflow,因为其实例默认在 Container-Optimized OS (COS) 上运行。这些证书更新不会影响 COS 环境。

对于 Managed Service for Apache Spark(以前称为 Dataproc)和 Vertex AI Workbench 实例,只有当您的实例同时满足以下两个强制性前提条件时,此过期时间才会对您产生影响:

  1. 您是在 2025 年 11 月 7 日之前创建的实例。
  2. 您已在实例上启用安全启动。这些服务默认不会启用安全启动。

如果您的实例满足这两项前提条件,则证书过期会影响这些实例。不过,由于操作系统供应商计划在可预见的未来对引导加载程序和 shim 更新进行双重签名,因此不会立即产生影响。除非您安装仅使用 2023 年证书签名的未来更新,否则您的实例不会受到影响。

如果我不采取任何措施,会怎么样?

如果您不采取任何行动,您的实例将继续使用其现有二进制文件正常启动和运行。不过,您可能无法应用未来的引导加载程序或内核更新,这些更新包含仅使用 2023 年证书签名的二进制文件。请注意,由于操作系统供应商使用 2011 年和 2023 年证书对引导加载程序和 shim 更新进行双重签名,因此预计不会立即发生启动失败或更新阻止的情况。

如果未能更新证书,是否会导致 Windows 实例无法启动?

不会。未能修正不会阻止 Windows 系统启动。不过,您可能会在系统事件日志中看到事件 ID 1801(“需要更新安全启动 CA/密钥”),并且无法应用仅包含使用新 2023 年证书签名的二进制文件的新内核或引导加载程序安全更新。

哪些特定条件会触发 Linux 上的启动失败?

在特定条件下,Linux 上可能会发生启动失败:

  • 实例已启用安全启动。
  • db UEFI 变量未更新为信任“Microsoft UEFI CA 2023”证书。
  • 操作系统更新了严格依赖于该证书(且未使用 2011 年证书进行双重签名)的引导加载程序(或 shim)。

如果您不应用引用新证书的证书更新或 shim 更新,您的 Linux 实例将继续成功启动。

如何确定我的实例是否已更新证书?

如需确定您的实例是否在其固件中包含新证书,请参阅验证部分中列出的命令。如果证书缺失,您可以按照 KEK 和数据库更新指南更新证书,也可以重新创建实例。

重启或重新启动受影响的实例能否解决问题?

不会。重新启动或重新启动计算实例不会更新其安全启动证书,但该实例会继续使用其现有证书正常启动和运行,直到应用仅使用 2023 年证书签名的包含二进制文件的引导加载程序或内核更新为止。如果您重启计算实例,则该实例会保留旧证书(如果该实例最初是在 2025 年 11 月 7 日之前创建的)。证书是实例固件 (vTPM/NVRAM) 的一部分。因此,您需要按照 KEK 和数据库更新指南操作,或重新创建实例以应用新证书。

如何为证书过期做准备?

如需做好准备,请执行以下步骤:

  • 识别:审核您对安全强化型虚拟机、安全启动、FDE、BitLocker 或任何依赖于 vTPM PCR 的软件的使用情况。
  • 恢复密钥和备份:确保及时获取恢复密钥(对于 FDE/BitLocker)和最新数据备份。
  • 管理映像:识别旧版自定义映像并终止使用这些映像,或确保这些映像包含新证书。
  • 更新或迁移:如果您想更新证书,请参阅 KEK 和数据库更新指南。 或者,考虑重新创建 2025 年 11 月 7 日之前创建的所有长时间运行的计算实例,因为新实例已包含必要的证书(前提是您从依赖于默认证书的映像创建新实例)。

标准磁盘快照是最可靠的方法。快照是磁盘的块级副本,不包含任何 UEFI 变量或实例级元数据。如需使用快照进行恢复,请执行以下操作:

  1. 创建实例的启动磁盘的快照。
  2. 创建新的计算实例,并选择快照作为启动磁盘的来源。

您不应使用机器映像、实例克隆或 Backup and DR Service 进行此迁移,因为它们会复制实例固件,并为 2025 年 11 月 7 日之前创建的任何源计算实例保留旧证书。

如果我的系统在 2026 年 6 月之后停止启动,该怎么办?

如果您认为此问题导致启动失败,请参阅问题排查

如何 Google Cloud 处理 Microsoft 安全启动证书过期问题?

Google Cloud 会自动为 2025 年 11 月 7 日之后创建的计算实例添加新证书。 只有希望在 2025 年 11 月 7 日之前继续运行其计算实例的客户可能需要应用未来的更新,但我们建议迁移到在 2025 年 11 月 7 日当天或之后创建的实例(依赖于默认证书)。

后续步骤