本指南提供了一种结构化方法,用于解决 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 11Microsoft-Windows-CAPI2/Operational。 - HGS 证明/密钥解包期间,“TransientError 主机无法访问”。
- 保护者导入后,“HasPrivateSigningKey = False”。
- 显示“灾难性故障(0x8000FFFF)”的群集日志。
原因 1:证书和密钥保护程序问题
- 缺少或不匹配的证书:vTPM 和受防护的 VM 需要签名和加密证书。 如果在迁移或导出/导入过程中缺少或未正确还原证书,则会出现问题。
- 不受信任的或损坏的密钥保护程序/监护人:守护者配置不当或缺少私钥可能会阻止 VM作。
- 已删除或未存储的证书:意外删除或未还原的受防护的 VM 证书会导致 VM 变得非作。
- 证书使用者可选名称(SAN)或信任问题:如果证书缺少所需的 SAN 或存在信任问题,则基于 HTTPS 的 HGS 将失败。
解决方法:证书和密钥保护程序解析
-
使用私钥导出和导入证书:
-
使用 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)
-
-
重新生成密钥保护程序:
$Owner = Get-HgsGuardian -Name "UntrustedGuardian" $KP = New-HgsKeyProtector -Owner $Owner -AllowUntrustedRoot Set-VMKeyProtector -VMName -KeyProtector $KP.RawData Enable-VMTPM -VMName -
更新签名和加密证书。 用于
Set-VMKeyProtector分配正确的证书。 -
解决缺少的证书。 使用原始 VHDX 文件创建新的 VM,并配置 vTPM 和密钥保护程序设置。
原因 2:TPM、硬件、驱动程序和固件不兼容
- TPM 模型或固件不兼容:早期 TPM 模型(如 HPE Gen9/Gen10)可能缺乏对 RSAPSS 等所需算法的支持。
- 过时的存储驱动程序/固件:加密功能通常需要更新的驱动程序和固件。
- 中央处理单元(CPU)兼容性问题:如果未跨群集节点配置 CPU 兼容性,实时迁移可能会失败。
解决方法:固件、驱动程序和硬件修正
-
更新存储和 TPM 固件。 请与硬件供应商合作应用最新更新。
-
检查 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 配置。
解决方法:配置、脚本和管理修复
-
更正 PowerShell 脚本。 确保脚本适当地处理 vTPM 启用和验证。
-
修复 VM 配置损坏。 使用现有 VHDX 文件重新创建 VM shell,并重新分配密钥保护程序。
-
启用所需的 Windows 功能:
Enable-WindowsOptionalFeature -Online -FeatureName IsolatedUserMode -
保持受保护的结构一致性。 将 VM 导入到同一受保护的构造中的主机上。
原因 4:文件系统和群集配置损坏
- 损坏
.vmcx的(VM 配置)文件:群集感知更新(CAU)或故障转移可能会损坏 VM 配置文件。 - 受保护的构造/群集节点不一致:受防护的 VM 必须托管在同一受保护的构造上才能正常工作。
解决方法:权限、注册表和文件系统检查
- 检查文件和文件夹权限。 验证 VM 配置和 VHDX 文件的访问权限。
- 验证注册表设置。 确认基于虚拟化的安全性、TPM 和 HGS 的设置。
原因 5:网络和安全协议问题
- 网络更改/中断:网络重新配置可能会暂时中断 HGS 证明。
- TLS/协议不匹配:HGS 可能默认为较旧的 TLS 版本,在未启用 TLS 1.2 的情况下禁用 TLS 1.0 可能会导致失败。
解决方法:HGS 证明、协议和网络步骤
- 配置 TLS 协议。 更新注册表设置以启用 TLS 1.2 并禁用 TLS 1.0。
- 解决 HTTPS 证书问题。 确保证书包括所有节点所需的 SAN。
- 排查证明失败问题。 使用
Test-NetConnection.. 测试网络连接。
原因 6:可支持性和文档差距
- 不支持 HGS 群集扩展:不支持向 HGS 群集添加具有不同硬件模型的节点。
- 文档差距:缺少某些 PowerShell 或 WMI 方法的指导可能会导致配置错误。
解决方法:最佳做法和文档
- HGS 群集扩展:仅向 HGS 群集添加相同的硬件节点。
- 保护现有 VM:使用 WMI
PrepareSpecializedMachine的方法保护 VM。
数据收集
若要收集数据进行故障排除,
-
通过事件查看器(应用程序、系统、CAPI2、HostGuardianService-Client)收集日志。
-
生成群集日志:
Get-ClusterLog -Destination -
使用网络诊断工具,例如
Test-NetConnectionWireshark。