針對受防護主機進行疑難解答
本文說明在受防護網狀架構中部署或操作受防護 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 問題,第二版。
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: