Hyper-V与虚拟化

排查虚拟 TPM、受防护的 VM 和主机保护者服务问题 - Windows Server

· 52CE 我爱测

本指南提供了一种结构化方法,用于解决 Hyper-V 群集中虚拟受信任的平台模块(vTPM)、受防护的虚拟机(VM)和主机保护者服务(HGS)的问题。 在实现解决方案之前,始终测试非生产环境中的更改并维护备份。 有关未解决的问题,请咨询硬件供应商或Microsoft支持人员。 VTPM、受防护的 VM 和 HGS 是 Hyper-V 群集中的重要功能,尤其是为了确保安全虚拟环境和符合 Windows 11 等现代作系统要求。 但是,由于配置错误、硬件或固件

本指南提供了一种结构化方法,用于解决 Hyper-V 群集中虚拟受信任的平台模块(vTPM)、受防护的虚拟机(VM)和主机保护者服务(HGS)的问题。 在实现解决方案之前,始终测试非生产环境中的更改并维护备份。 有关未解决的问题,请咨询硬件供应商或Microsoft支持人员。

VTPM、受防护的 VM 和 HGS 是 Hyper-V 群集中的重要功能,尤其是为了确保安全虚拟环境和符合 Windows 11 等现代作系统要求。 但是,由于配置错误、硬件或固件不兼容或软件错误,可能会出现这些功能的问题。 这些问题可能会影响 VM 启动、迁移或安全配置,从而导致重大中断。 本指南整合了常见方案、原因和解决方法,以帮助高效还原安全 VM作。

最终用户和技术症状

  • 启用了 vTPM 的 VM 无法启动或迁移群集节点。
  • VM 仅在原始主机上保持运行状态,无法进行故障转移。
  • 受防护的 VM 无法启动、迁移或故障转移。
  • 即使在禁用防护后,防护图标仍保留在管理工具中。
  • 通过 HTTPS 使用 HGS 时,证明或密钥解包作失败。
  • VM 在群集感知更新或修补后从群集或管理工具中消失。
  • BitLocker 启用失败,或设备加密报告为不支持。
  • HGS 证明在所有或某些受保护的主机上失败。
  • VM 在启用 TPM 或升级作系统后无法启动。
  • 扩展具有不同硬件模型的节点的 HGS 群集会失败。
  • 设备加密支持报告“功能不可用”、“未配置 winre”或“硬件安全测试接口失败”等错误。

特定错误消息和事件 ID

无法解包密钥保护程序。

HGS 不能是所有者,因为它没有私钥。

无法自动生成虚拟机的本地安全策略。

错误代码:0x80131500

计算的身份验证标记与输入身份验证标记不匹配。

错误代码:0xC000A002

虚拟机没有密钥保护程序,并且无法自动在受保护的构造中添加密钥保护程序。

Invoke-CimMethod:[函数名称]使用算法:Rsa 失败。

HRESULT:0x80131500
  • 事件 ID 2014, Microsoft-Windows-HostGuardianService-Client/Admin.
  • 事件 ID 57 和 CertificateServicesClient-CertEnroll事件 ID 11 Microsoft-Windows-CAPI2/Operational。
  • HGS 证明/密钥解包期间,“TransientError 主机无法访问”。
  • 保护者导入后,“HasPrivateSigningKey = False”。
  • 显示“灾难性故障(0x8000FFFF)”的群集日志。

原因 1:证书和密钥保护程序问题

  • 缺少或不匹配的证书:vTPM 和受防护的 VM 需要签名和加密证书。 如果在迁移或导出/导入过程中缺少或未正确还原证书,则会出现问题。
  • 不受信任的或损坏的密钥保护程序/监护人:守护者配置不当或缺少私钥可能会阻止 VM作。
  • 已删除或未存储的证书:意外删除或未还原的受防护的 VM 证书会导致 VM 变得非作。
  • 证书使用者可选名称(SAN)或信任问题:如果证书缺少所需的 SAN 或存在信任问题,则基于 HTTPS 的 HGS 将失败。

解决方法:证书和密钥保护程序解析

  1. 使用私钥导出和导入证书:

    • 使用 certlm.msc 或 PowerShell 从源主机导出证书:

      Export-PfxCertificate -Cert (Get-ChildItem -Path Cert:\LocalMachine\My<thumbprint>) -FilePath C:\path\to\export.pfx -Password (ConvertTo-SecureString -String '' -AsPlainText -Force)
      
    • 在目标主机上导入证书:

      Import-PfxCertificate -FilePath C:\path\to\export.pfx -CertStoreLocation Cert:\LocalMachine\My -Password (ConvertTo-SecureString -String '' -AsPlainText -Force)
      
  2. 重新生成密钥保护程序:

    $Owner = Get-HgsGuardian -Name "UntrustedGuardian"
    $KP = New-HgsKeyProtector -Owner $Owner -AllowUntrustedRoot
    Set-VMKeyProtector -VMName -KeyProtector $KP.RawData
    Enable-VMTPM -VMName
    
  3. 更新签名和加密证书。 用于 Set-VMKeyProtector 分配正确的证书。

  4. 解决缺少的证书。 使用原始 VHDX 文件创建新的 VM,并配置 vTPM 和密钥保护程序设置。

原因 2:TPM、硬件、驱动程序和固件不兼容

  • TPM 模型或固件不兼容:早期 TPM 模型(如 HPE Gen9/Gen10)可能缺乏对 RSAPSS 等所需算法的支持。
  • 过时的存储驱动程序/固件:加密功能通常需要更新的驱动程序和固件。
  • 中央处理单元(CPU)兼容性问题:如果未跨群集节点配置 CPU 兼容性,实时迁移可能会失败。

解决方法:固件、驱动程序和硬件修正

  1. 更新存储和 TPM 固件。 请与硬件供应商合作应用最新更新。

  2. 检查 TPM 对所需算法的支持:

    使用以下方法验证 RSAPSS 支持:

    Get-WmiObject -Namespace "Root\CIMV2\Security\MicrosoftTpm" -Class Win32_Tpm
    

原因 3:配置和脚本错误

  • 不正确的 PowerShell 脚本使用:用于启用 vTPM 或受防护的 VM 功能的自动化脚本中的错误可能会导致问题。
  • HGS 或群集设置中的配置错误:未启用所需的 Windows 功能或 HGS 注册不正确时出现问题。
  • 混合管理工具:使用 System Center Virtual Machine Manager(SCVMM)、故障转移群集管理器和 PowerShell 等工具进行并发修改可能会损坏 VM 配置。

解决方法:配置、脚本和管理修复

  1. 更正 PowerShell 脚本。 确保脚本适当地处理 vTPM 启用和验证。

  2. 修复 VM 配置损坏。 使用现有 VHDX 文件重新创建 VM shell,并重新分配密钥保护程序。

  3. 启用所需的 Windows 功能:

    Enable-WindowsOptionalFeature -Online -FeatureName IsolatedUserMode
    
  4. 保持受保护的结构一致性。 将 VM 导入到同一受保护的构造中的主机上。

原因 4:文件系统和群集配置损坏

  • 损坏 .vmcx 的(VM 配置)文件:群集感知更新(CAU)或故障转移可能会损坏 VM 配置文件。
  • 受保护的构造/群集节点不一致:受防护的 VM 必须托管在同一受保护的构造上才能正常工作。

解决方法:权限、注册表和文件系统检查

  1. 检查文件和文件夹权限。 验证 VM 配置和 VHDX 文件的访问权限。
  2. 验证注册表设置。 确认基于虚拟化的安全性、TPM 和 HGS 的设置。

原因 5:网络和安全协议问题

  • 网络更改/中断:网络重新配置可能会暂时中断 HGS 证明。
  • TLS/协议不匹配:HGS 可能默认为较旧的 TLS 版本,在未启用 TLS 1.2 的情况下禁用 TLS 1.0 可能会导致失败。

解决方法:HGS 证明、协议和网络步骤

  1. 配置 TLS 协议。 更新注册表设置以启用 TLS 1.2 并禁用 TLS 1.0。
  2. 解决 HTTPS 证书问题。 确保证书包括所有节点所需的 SAN。
  3. 排查证明失败问题。 使用 Test-NetConnection.. 测试网络连接。

原因 6:可支持性和文档差距

  • 不支持 HGS 群集扩展:不支持向 HGS 群集添加具有不同硬件模型的节点。
  • 文档差距:缺少某些 PowerShell 或 WMI 方法的指导可能会导致配置错误。

解决方法:最佳做法和文档

  1. HGS 群集扩展:仅向 HGS 群集添加相同的硬件节点。
  2. 保护现有 VM:使用 WMI PrepareSpecializedMachine 的方法保护 VM。

数据收集

若要收集数据进行故障排除,

  • 通过事件查看器(应用程序、系统、CAPI2、HostGuardianService-Client)收集日志。

  • 生成群集日志:

    Get-ClusterLog -Destination
    
  • 使用网络诊断工具,例如 Test-NetConnection Wireshark。

Reference

Msps_ProvisioningService 类的 PrepareSpecializedMachine 方法

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。