針對受防護主機進行疑難解答

本文說明在受防護網狀架構中部署或操作受防護 Hyper-V 主機時所遇到常見問題的解決方法。

適用於:Windows Server 2022、Windows Server 2019 Windows Server 2016

如果您不確定問題的本質,請先嘗試在 Hyper-V 主機上執行 受防護網狀架構診斷 ,以縮小可能的原因。

受防護主機功能

如果您遇到 Hyper-V 主機的問題,請先確定已安裝 主機守護者 Hyper-V 支援 功能。 如果沒有這項功能,Hyper-V 主機會遺失一些重要的組態設定和軟體,以允許它通過證明並布建受防護的 VM。

若要檢查是否已安裝此功能,請使用 伺服器管理員 或在提升許可權的 PowerShell 視窗中執行下列 Cmdlet:

Get-WindowsFeature HostGuardian

如果未安裝此功能,請使用下列 PowerShell Cmdlet 加以安裝:

Install-WindowsFeature HostGuardian -Restart

證明失敗

如果主機未向主機守護者服務傳遞證明,則無法執行受防護的 VM。 該主機上 Get-HgsClientConfiguration 的輸出會顯示該主機證明失敗原因的相關信息。

下表說明可能出現在 AttestationStatus 字段中的值,以及可能的後續步驟。

AttestationStatus 說明
已到期 主機先前已通過證明,但發出的健康情況憑證已過期。 確定主機和 HGS 時間已同步。
InsecureHostConfiguration 主機未通過證明,因為它不符合 HGS 上設定的證明原則。 如需詳細資訊,請參閱 AttestationSubStatus 數據表。
NotConfigured 主機未設定為使用 HGS 進行證明和金鑰保護。 而是針對本機模式進行設定。 如果此主機位於受防護網狀架構中,請使用 Set-HgsClientConfiguration 為它提供 HGS 伺服器的 URL。
通過 主機通過證明。
暫時性錯誤 上一次證明嘗試失敗,因為發生網路、服務或其他暫時性錯誤。 重試最後一個作業。
TpmError 主機無法完成上次的證明嘗試,因為您的 TPM 發生錯誤。 如需詳細資訊,請參閱您的 TPM 記錄。
UnauthorizedHost 主機未通過證明,因為它未獲授權執行受防護的 VM。 確定主機屬於 HGS 信任的安全組,以執行受防護的 VM。
Unknown 主機尚未嘗試使用 HGS 進行證明。

當 AttestationStatus 回報為 InsecureHostConfiguration 時,AttestationSubStatus 字段中會填入一或多個原因。 下表說明 AttestationSubStatus 的可能值,以及如何解決問題的秘訣。

AttestationSubStatus 其意義和用途
BitLocker 主機的 OS 磁碟區不會由 BitLocker 加密。 若要解決此問題,請在OS磁碟區上 啟用BitLocker ,或 停用HGS上的 BitLocker 原則
CodeIntegrityPolicy 主機未設定為使用程式碼完整性原則,或未使用 HGS 伺服器信任的原則。 請確定已設定程式代碼完整性原則、主機已重新啟動,且原則已向 HGS 伺服器註冊。 如需詳細資訊,請 參閱建立和套用程式代碼完整性原則
DumpsEnabled 主機已設定為允許損毀傾印或即時記憶體轉儲,這是您的 HGS 原則不允許的。 若要解決此問題,請停用主機上的傾印。
DumpEncryption 主機已設定為允許損毀傾印或即時記憶體轉儲,但不會加密這些傾印。 停用主機上的傾印或設定 傾印加密
DumpEncryptionKey 主機已設定為允許和加密傾印,但不會使用 HGS 已知的憑證來加密它們。 若要解決此問題,請更新主機上 的傾印加密密鑰 ,或 向 HGS 註冊金鑰
FullBoot 主機從睡眠狀態或休眠狀態繼續。 重新啟動主機以允許全新開機。
HibernationEnabled 主機設定為允許休眠,而不加密休眠檔案,您的 HGS 原則不允許此檔案。 停用休眠並重新啟動主機,或 設定傾印加密
HypervisorEnforcedCodeIntegrityPolicy 主機未設定為使用 Hypervisor 強制執行的程式代碼完整性原則。 確認 Hypervisor 已啟用、設定及強制執行程式代碼完整性。 如需詳細資訊,請參閱 Device Guard 部署指南
Iommu 主機的虛擬化安全性功能未設定為需要 IOMMU 裝置,以防範直接記憶體取攻擊,如您的 HGS 原則所要求。 確認主機具有 IOMMU、已啟用,且 Device Guard 已設定為在啟動 VBS 時 需要 DMA 保護
PagefileEncryption 主機上未啟用頁面檔加密。 若要解決此問題,請執行 fsutil behavior set encryptpagingfile 1 以啟用頁面檔加密。 如需詳細資訊,請 參閱 fsutil behavior
SecureBoot 此主機上未啟用安全開機,或未使用 Microsoft 安全開機範本。 使用 Microsoft 安全開機範本啟用安全開機 ,以解決此問題。
SecureBootSettings 此主機上的 TPM 基準不符合 HGS 信任的任何基準。 當您的 UEFI 啟動授權單位、DBX 變數、偵錯旗標或自定義安全開機原則透過安裝新的硬體或軟體來變更時,就會發生這種情況。 如果您信任這部計算機目前的硬體、韌體和軟體設定,您可以 擷取新的 TPM 基準 ,並向 HGS 註冊
TcgLogVerification 無法取得或驗證 TPM 基準 (TCG 記錄) 。 這可能表示主機的韌體、TPM 或其他硬體元件發生問題。 如果您的主機設定為在開機 Windows 之前嘗試 PXE 開機,則過期的 Net Boot Program (NBP) 也可能導致此錯誤。 啟用 PXE 開機時,請確定所有 NBC 都是最新的。
VirtualSecureMode 虛擬化型安全性功能未在主機上執行。 確定 VBS 已啟用,且您的系統符合設定的平台安全性功能。 如需 VBS 需求的詳細資訊,請參閱 Device Guard 檔

新式 TLS

如果您已部署組策略或設定 Hyper-V 主機以防止使用 TLS 1.0,則在嘗試啟動受防護的 VM 時,可能會發生「主機守護者服務客戶端無法代表呼叫進程解除包裝密鑰保護裝置」錯誤。 這是因為 .NET 4.6 中的預設行為,當與 HGS 伺服器交涉支援的 TLS 版本時,系統預設 TLS 版本不會被考慮。

若要解決此行為,請執行下列兩個命令,將 .NET 設定為針對所有 .NET 應用程式使用系統預設 TLS 版本。

reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32

警告

系統預設 TLS 版本設定會影響您電腦上的所有 .NET 應用程式。 請務必先在隔離的環境中測試登錄機碼,再將它們部署到生產機器。

如需 .NET 4.6 和 TLS 1.0 的詳細資訊,請參閱 解決 TLS 1.0 問題,第二版