針對受防護主機進行疑難解答
本文說明在受防護網狀架構中部署或操作受防護 Hyper-V 主機時所遇到的常見問題的解決方案。
適用於: 所有支援的 Windows Server 版本
如果您不確定問題的性質,請先嘗試在 Hyper-V 主機上執行 受防護網狀架構診斷 ,以縮小潛在原因。
受防護主機功能
如果您遇到 Hyper-V 主機的問題,請先確定 已安裝主機守護者 Hyper-V 支援 功能。 如果沒有這項功能,Hyper-V 主機就缺少一些重要的組態設定和軟體,可讓其通過證明和布建受防護的 VM。
若要檢查是否已安裝此功能,請使用 伺服器管理員,或在提升許可權的 PowerShell 視窗中執行下列 Cmdlet:
Get-WindowsFeature HostGuardian
如果未安裝此功能,請使用下列 PowerShell Cmdlet 進行安裝:
Install-WindowsFeature HostGuardian -Restart
證明失敗
如果主機未透過主機守護者服務傳遞證明,就無法執行受防護的 VM。 該主機上的 Get-HgsClientConfiguration 輸出會顯示該主機為何未通過證明的相關資訊。
下表說明可能出現在 [證明狀態] 欄位中的值,以及後續步驟 (如果適用)。
AttestationStatus | 說明 |
---|---|
已過期 | 主機先前已通過證明,但簽發給該主機的健康情況憑證已過期。 請確認主機和 HGS 時間為同步。 |
InsecureHostConfiguration | 主機未通過證明,因為它不符合 HGS 上設定的證明原則。 如需詳細資訊,請參閱 AttestationSubStatus 數據表。 |
NotConfigured | 主機未設定為使用 HGS 進行證明和金鑰保護。 而是針對本機模式進行設定。 如果此主機位於受防護網狀架構中,請使用 Set-HgsClientConfiguration 為其提供 HGS 伺服器的 URL。 |
已通過 | 主機已通過證明。 |
TransientError | 最後一次證明嘗試失敗,因為發生網路、服務或其他暫時性錯誤。 請重試您的最後一個作業。 |
TpmError | 由於 TPM 發生錯誤,主機無法完成其最後一次證明嘗試。 如需詳細資訊,請參閱您的 TPM 記錄。 |
UnauthorizedHost | 主機未通過證明,因為它未獲授權執行受防護的 VM。 請確定主機屬於 HGS 信任的安全性群組,以執行受防護的 VM。 |
Unknown | 主機尚未嘗試使用 HGS 進行證明。 |
當 AttestationStatus 回報為 InsecureHostConfiguration 時,AttestationSubStatus 字段中會填入一或多個原因。 下表說明 AttestationSubStatus 的可能值,以及如何解決問題的提示。
AttestationSubStatus | 代表的意義及應採取的動作 |
---|---|
BitLocker | BitLocker 不會加密主機的 OS 磁碟區。 若要解決此問題,請在 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 行為。 |
SecureBoot | 此主機未啟用安全開機,或未使用 Microsoft 安全開機範本。 請使用 Microsoft 安全開機範本啟用安全開機,以解決此問題。 |
SecureBootSettings | 此主機上的 TPM 基準不符合 HGS 信任的任何一項。 若因為安裝新的硬體或軟體而變更了您的 UEFI 啟動授權、DBX 變數、偵錯旗標或自訂安全開機原則,就會發生這種情況。 如果您信任此機器目前的硬體、韌體和軟體設定,您可以擷取新的 TPM 基準,並將其註冊至 HGS。 |
TcgLogVerification | 無法取得或驗證 TCG 記錄 (TPM 基準)。 這可能表示主機的韌體、TPM 或其他硬體元件有問題。 如果您的主機設定為會在 Windows 開機之前嘗試 PXE 開機,則過時的網路開機程式 (NBP) 也可能造成此錯誤。 請確定在 PXE 開機啟用時,所有 NBP 都是最新的。 |
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 問題第 2 版。