Condividi tramite


Risolvere i problemi del servizio Sorveglianza host

Questo articolo descrive le risoluzioni dei problemi più comuni riscontrati durante la distribuzione o il funzionamento di un server di servizio Sorveglianza host (HGS) in un'infrastruttura sorvegliata.

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

Se non si è certi della natura del problema, provare prima a eseguire la diagnostica dell'infrastruttura sorvegliata nei server HGS e negli host Hyper-V per limitare le possibili cause.

Certificati

Per funzionare, il servizio Sorveglianza host richiede diversi certificati, tra cui il certificato di crittografia e di firma configurato dall'amministratore e un certificato di attestazione gestito dal servizio Sorveglianza host stesso. Se questi certificati sono configurati in modo non corretto, HGS non è in grado di gestire le richieste dagli host Hyper-V che desiderano attestare o sbloccare le protezioni con chiave per le macchine virtuali schermate. Le sezioni seguenti illustrano i problemi comuni relativi ai certificati configurati nel servizio Sorveglianza host.

Autorizzazioni del certificato

Il servizio Sorveglianza host deve essere in grado di accedere sia alla chiave pubblica che a quella privata dei certificati di crittografia e firma aggiunti al servizio Sorveglianza host dall'identificazione personale del certificato. In particolare, l'account del servizio gestito del gruppo che esegue il servizio Sorveglianza host deve poter accedere alle chiavi. Per trovare l'account del servizio gestito del gruppo usato dal servizio Sorveglianza host, eseguire il comando seguente in un prompt di PowerShell con privilegi elevati nel server del servizio Sorveglianza host:

(Get-IISAppPool -Name KeyProtection).ProcessModel.UserName

La modalità di concessione dell’accesso all'account del servizio gestito del gruppo per l'uso della chiave privata dipende dalla posizione in cui è archiviata la chiave: nel computer come file di certificato locale, in un modulo di protezione hardware (HSM) o tramite un provider di archiviazione chiavi di terze parti personalizzato.

Concedere l'accesso alle chiavi private supportate dal software

Se si usa un certificato autofirmato o un certificato emesso da un'autorità di certificazione non archiviata in un modulo di sicurezza hardware o in un provider di archiviazione chiavi personalizzato, è possibile modificare le autorizzazioni per la chiave privata seguendo questa procedura:

  1. Aprire gestione certificati locale (certlm.msc).
  2. Espandere Certificati personali>e trovare il certificato di firma o crittografia da aggiornare.
  3. Fare clic con il pulsante destro del mouse sul certificato e scegliere Tutte le attività>Gestisci chiavi private.
  4. Selezionare Aggiungi per concedere a un nuovo utente l'accesso alla chiave privata del certificato.
  5. Nel selettore di oggetti, immettere il nome dell'account del servizio gestito del gruppo per il servizio Sorveglianza host trovato in precedenza, quindi selezionare OK.
  6. Verificare che l'account del servizio gestito del gruppo abbia accesso in lettura al certificato.
  7. Selezionare OK per chiudere la finestra delle autorizzazioni.

Se si esegue HGS in Server Core o si gestisce il server in modalità remota, non sarà possibile gestire le chiavi private usando gestione certificati locale. È invece necessario scaricare il modulo PowerShell Guarded Fabric Tools, che consentirà di gestire le autorizzazioni in PowerShell.

  1. Aprire una console di PowerShell con privilegi elevati nel computer Server Core o usare PowerShell Remoting con un account che dispone di autorizzazioni di amministratore locale per il servizio Sorveglianza host.
  2. Eseguire i comandi seguenti per installare il modulo PowerShell Guarded Fabric Tools e concedere all'account del servizio gestito del gruppo l'accesso alla chiave privata.
$certificateThumbprint = '<ENTER CERTIFICATE THUMBPRINT HERE>'

# Install the Guarded Fabric Tools module, if necessary
Install-Module -Name GuardedFabricTools -Repository PSGallery

# Import the module into the current session
Import-Module -Name GuardedFabricTools

# Get the certificate object
$cert = Get-Item "Cert:\LocalMachine\My\$certificateThumbprint"

# Get the gMSA account name
$gMSA = (Get-IISAppPool -Name KeyProtection).ProcessModel.UserName

# Grant the gMSA read access to the certificate
$cert.Acl = $cert.Acl | Add-AccessRule $gMSA Read Allow

Concedere l'accesso a un modulo di protezione hardware o a chiavi private personalizzate supportate dal provider

Se le chiavi private del certificato sono supportate da un modulo di protezione hardware (HSM) o da un provider di archiviazione chiavi personalizzato, il modello di autorizzazione dipende dal fornitore software specifico. Per ottenere risultati ottimali, consultare la documentazione o il sito di supporto del fornitore per informazioni su come vengono gestite le autorizzazioni delle chiavi private per il dispositivo/software specifico. In tutti i casi, l'account del servizio gestito del gruppo usato dal servizio Sorveglianza host richiede le autorizzazioni di lettura sulle chiavi private dei certificati di crittografia, firma e comunicazione per poter eseguire le operazioni di firma e crittografia.

Alcuni moduli di sicurezza hardware non supportano la concessione di account utente specifici l'accesso a una chiave privata; consentono invece all'account computer di accedere a tutte le chiavi in un set di chiavi specifico. Per tali dispositivi, in genere è sufficiente concedere al computer l'accesso alle chiavi e HGS è in grado di sfruttare tale connessione.

Suggerimenti per i moduli di protezione hardware

Di seguito sono riportate le opzioni di configurazione consigliate che consentono di usare correttamente le chiavi supportate da HSM con il servizio Sorveglianza host in base alle esperienze di Microsoft e dei suoi partner. Questi suggerimenti sono forniti per comodità e non sono garantiti per essere corretti al momento della lettura, né sono approvati dai produttori HSM. Contattare il produttore del modulo di protezione hardware per ottenere informazioni accurate relative al dispositivo specifico in caso di ulteriori domande.

Marchio/serie HSM Suggerimento
Gemalto SafeNet Verificare che la proprietà di utilizzo della chiave nel file di richiesta del certificato sia impostata su 0xa0, consentendo l'uso del certificato per la firma e la crittografia. Inoltre, è necessario concedere all'account del servizio gestito del gruppo l'accesso in lettura alla chiave privata usando lo strumento di gestione certificati locale (vedere i passaggi precedenti).
nCipher nShield Verificare che ogni nodo del servizio Sorveglianza host abbia accesso al mondo della sicurezza contenente le chiavi di firma e crittografia. Potrebbe anche essere necessario concedere all'account del servizio gestito del gruppo l'accesso in lettura alla chiave privata usando il gestore dei certificati locale (vedere i passaggi precedenti).
Utimaco CryptoServers Verificare che la proprietà di utilizzo della chiave nel file di richiesta del certificato sia impostata su 0x13, consentendo l'utilizzo del certificato per la crittografia, la decrittografia e la firma.

Richieste di certificati

Se si usa un'autorità di certificazione per rilasciare i certificati in un ambiente PKI (Public Key Infrastructure), è necessario assicurarsi che la richiesta di certificato includa i requisiti minimi per l'utilizzo di tali chiavi da parte di HGS.

Certificati di firma

Csr - proprietà Valore obbligatorio
Algoritmo RSA
Key size Almeno 2048 bit
Uso della chiave Firma/Segno/Firma digitale

Certificati di crittografia

Csr - proprietà Valore obbligatorio
Algoritmo RSA
Key size Almeno 2048 bit
Uso della chiave Crittografia/Cifratura/DataEncipherment

Modelli di Servizi certificati Active Directory

Se si usano modelli di certificato ADCS (Active Directory Certificate Services) per creare i certificati, è consigliabile usare un modello con le impostazioni seguenti:

Proprietà del modello ADCS Valore obbligatorio
Categoria provider Provider di archiviazione chiavi
Nome algoritmo RSA
Dimensioni minime della chiave 2048
Ambito Firma e crittografia
Estensione per l'utilizzo delle chiavi Firma digitale, Crittografia chiave, Crittografia dati ("Consenti crittografia dei dati utente")

Deviazione temporale

Se l'ora del server si è discostata in modo significativo da quella di altri nodi del servizio Sorveglianza host o host Hyper-V nell’infrastruttura sorvegliata, è possibile che si verifichino problemi con la validità del certificato del firmatario dell'attestazione. Il certificato del firmatario di attestazione viene creato e rinnovato in background nel servizio Sorveglianza host e viene usato per firmare i certificati di integrità rilasciati agli host sorvegliati dal servizio di attestazione.

Per aggiornare il certificato del firmatario di attestazione, eseguire il comando seguente in un prompt di PowerShell con privilegi elevati.

Start-ScheduledTask -TaskPath \Microsoft\Windows\HGSServer -TaskName
AttestationSignerCertRenewalTask

In alternativa, è possibile eseguire manualmente l'attività pianificata aprendo Utilità di pianificazione (taskschd.msc), passando a Libreria>utilità di pianificazione Microsoft>Windows>HGSServer ed eseguendo l'attività denominata AttestationSignerCertRenewalTask.

Passaggio delle modalità di attestazione

Se si passa dalla modalità TPM alla modalità Active Directory o viceversa usando il cmdlet Set-HgsServer, potrebbero essere necessari fino a 10 minuti per ogni nodo del cluster del servizio Sorveglianza host per iniziare ad applicare la nuova modalità di attestazione.

Si tratta di un comportamento normale.

È consigliabile non rimuovere criteri che consentano agli host dalla modalità di attestazione precedente fino a quando non si è verificato che tutti gli host siano attestati correttamente usando la nuova modalità di attestazione.

Problema noto durante il passaggio dalla modalità TPM alla modalità AD

Se il cluster HGS è stato inizializzato in modalità TPM e successivamente si passa alla modalità Active Directory, si verifica un problema noto che impedisce ad altri nodi del cluster HGS di passare alla nuova modalità di attestazione. Per assicurarsi che tutti i server HGS applichino la modalità di attestazione corretta, eseguire Set-HgsServer -TrustActiveDirectory in ogni nodo del cluster HGS.

Questo problema non si applica se si passa dalla modalità TPM alla modalità AD e il cluster è stato originariamente configurato in modalità AD.

È possibile verificare la modalità di attestazione del server del servizio Sorveglianza host eseguendo Get-HgsServer.

Criteri di crittografia del dump della memoria

Se si tenta di configurare i criteri di crittografia del dump della memoria e non vengono visualizzati i criteri di dump HGS predefiniti (Hgs_NoDumps, Hgs_DumpEncryption e Hgs_DumpEncryptionKey) o il cmdlet dei criteri di dump (Add-HgsAttestationDumpPolicy), è probabile che non sia installato l'aggiornamento cumulativo più recente.

Per risolvere questo problema, aggiornare il server del servizio Sorveglianza host all'aggiornamento cumulativo più recente di Windows e attivare i nuovi criteri di attestazione.

Assicurarsi di aggiornare gli host Hyper-V allo stesso aggiornamento cumulativo prima di attivare i nuovi criteri di attestazione, perché gli host che non dispongono delle nuove funzionalità di crittografia dump installate avranno probabilmente esito negativo attestazione dopo l'attivazione dei criteri HGS.

Messaggi di errore del certificato della chiave di approvazione

Quando si registra un host usando il cmdlet Add-HgsAttestationTpmHost , due identificatori TPM vengono estratti dal file di identificatore della piattaforma fornito: il certificato della chiave di verifica dell'autenticità (EKcert) e la chiave di verifica dell'autenticità pubblica (EKpub). Il certificato EKcert identifica il produttore del TPM, fornendo garanzie che il TPM sia autentico e prodotto attraverso la normale catena di approvvigionamento. EKpub identifica in modo univoco tale TPM specifico ed è una delle misure usate dal servizio Sorveglianza host per concedere a un host l'accesso per eseguire macchine virtuali schermate.

Si riceverà un errore quando si registra un host TPM se una delle due condizioni è vera:

  • Il file dell'identificatore della piattaforma non contiene un certificato di chiave di verifica dell'autenticità.
  • Il file dell'identificatore della piattaforma contiene un certificato di chiave di verifica dell'autenticità, ma tale certificato non è attendibile nel sistema.

Alcuni produttori di TPM non includono I certificati EK nei relativi TPM.

Se si sospetta che questo sia il caso del TPM, verificare con l'OEM che il TPM non debba avere un EKcert e usare il flag -Force per registrare manualmente l'host con il servizio Sorveglianza host. Se il TPM deve avere un certificato EK, ma non è stato trovato nel file dell'identificatore della piattaforma, assicurarsi di usare una console di PowerShell di amministratore (con privilegi elevati) quando si esegue Get-PlatformIdentifier nell'host.

Se si riceve l'errore che il certificato EKcert non è attendibile, assicurarsi di aver installato il pacchetto di certificati radice TPM attendibili in ogni server HGS e che il certificato radice per il fornitore TPM sia presente nell'archivio "TrustedTPM_RootCA" del computer locale. Tutti i certificati intermedi applicabili devono essere installati anche nell'archivio "TrustedTPM_IntermediateCA" nel computer locale. Dopo aver installato i certificati radice e intermedi, dovrebbe essere possibile eseguire Add-HgsAttestationTpmHost correttamente.

Privilegi dell'account del servizio gestito del gruppo

All'account del servizio Sorveglianza host (account del servizio gestito del gruppo usato per il pool di applicazioni del servizio protezione chiavi in IIS) deve essere concesso il privilegio Genera controlli di sicurezza, noto anche come SeAuditPrivilege. Se questo privilegio non è presente, la configurazione HGS iniziale ha esito positivo e IIS viene avviato, tuttavia il servizio protezione chiavi non è funzionale e restituisce l'errore HTTP 500 ("Errore server in /KeyProtection Application"). È anche possibile osservare i messaggi di avviso seguenti nel registro eventi dell'applicazione.

System.ComponentModel.Win32Exception (0x80004005): A required privilege is not held by the client
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.NativeUtility.RegisterAuditSource(String pszSourceName, SafeAuditProviderHandle& phAuditProvider)
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)

or

Failed to register the security event source.
   at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
   at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
   at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
   at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
   at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

Failed to register the security event source.
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.ReportAudit(EventLogEntryType eventType, UInt32 eventId, Object[] os)
   at Microsoft.Windows.KpsServer.KpsServerHttpApplication.Application_Start()

A required privilege is not held by the client
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.NativeUtility.RegisterAuditSource(String pszSourceName, SafeAuditProviderHandle& phAuditProvider)
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)

Inoltre, è possibile notare che nessuno dei cmdlet del servizio protezione chiavi (ad esempio, Get-HgsKeyProtectionCertificate) funziona e restituisce invece errori.

Per risolvere questo problema, è necessario concedere l'account del servizio gestito del gruppo "Genera controlli di sicurezza" (SeAuditPrivilege). A tale scopo, è possibile usare i criteri di sicurezza locali SecPol.msc in ogni nodo del cluster HGS o Criteri di gruppo. In alternativa, è possibile usare lo strumento SecEdit.exe per esportare i criteri di sicurezza correnti, apportare le modifiche necessarie nel file di configurazione (che è un testo normale) e quindi importarlo di nuovo.

Nota

Quando si configura questa impostazione, l'elenco dei principi di sicurezza definiti per un privilegio sostituisce completamente le impostazioni predefinite (non concatena). Pertanto, quando si definisce questa impostazione di criterio, assicurarsi di includere entrambi i titolari predefiniti di questo privilegio (servizio di rete e servizio locale) oltre all'account del servizio gestito del gruppo che si sta aggiungendo.