Condividi tramite


Errore 0xC004F074 "Impossibile contattare un servizio di gestione delle chiavi"

Si applica a: ✔️ macchine virtuali di Windows

Questo articolo illustra come risolvere l'errore di 0xC004F074 che si verifica quando si tenta di attivare una macchina virtuale Windows in Microsoft Azure.

Prerequisiti

Sintomi

Quando si tenta di attivare una macchina virtuale Windows di Azure, viene visualizzato il messaggio di errore seguente nell'host di Windows Script:

Errore: 0xC004F074 Servizio licenze software ha segnalato che non è stato possibile attivare il computer. Impossibile contattare un Servizio di gestione delle chiavi. Per altre informazioni, vedere il log eventi dell'applicazione.

Causa

La macchina virtuale non può connettersi al servizio del Servizio di gestione delle chiavi per l'attivazione. Se viene usato un servizio di gestione delle chiavi di Azure per l'attivazione (la selezione predefinita), la richiesta di attivazione deve provenire da un indirizzo IP pubblico di Azure. Le possibili cause di questo errore di connettività includono:

  • Tunneling forzato, in cui tutto il traffico viene instradato all'esterno di Azure (in genere a un ambiente locale) usando Azure ExpressRoute o un'appliance virtuale di rete

  • Traffico bloccato da un'appliance virtuale di rete o da un servizio di bilanciamento del carico interno standard

Analisi

Per determinare la causa specifica del problema, seguire la procedura in tre parti nelle sezioni seguenti.

Parte 1: Configurare la chiave di configurazione del client del Servizio di gestione delle chiavi appropriata

Note

Questa parte non è necessaria per le macchine virtuali che eseguono Windows 10 Enterprise multisessione (noto anche come Windows 10 Enterprise per desktop virtuali) in Desktop virtuale Azure.

Per determinare se la macchina virtuale esegue l'edizione multisessione, eseguire il comando di script di Software License Manager seguente:

slmgr.vbs /dlv

Se l'output contiene la Name: Windows(R), ServerRdsh edition stringa, la macchina virtuale esegue l'edizione multisessione ed è possibile ignorare il resto di questa parte.

Note

Se si distribuisce una macchina virtuale windows 10 Enterprise multisessione e quindi si aggiorna il codice Product Key a un'altra edizione, non è possibile ripristinare la macchina virtuale in Windows 10 Enterprise multisessione. È invece necessario ridistribuire la macchina virtuale. Per altre informazioni, vedere È possibile aggiornare una macchina virtuale Windows a Windows Enterprise multisessione?

Per la macchina virtuale creata da un'immagine personalizzata, è necessario configurare la chiave di configurazione del client del Servizio di gestione delle chiavi appropriata per la macchina virtuale. Seguire questa procedura:

  1. In una finestra del prompt dei comandi con privilegi elevati eseguire il comando di script di Gestione licenze software seguente:

    cscript c:\windows\system32\slmgr.vbs /dlv
    
  2. Controllare il Description valore nell'output per determinare se la macchina virtuale è stata creata da supporti di licenza retail (RETAIL canale) o multilicenza (VOLUME_KMSCLIENT).

  3. Se l'output del comando precedente indica il RETAIL canale, eseguire i comandi di script di Software License Manager seguenti. Il primo comando imposta la chiave di installazione del client del Servizio di gestione delle chiavi per la versione di Windows Server usata e il secondo comando forza un altro tentativo di attivazione.

    cscript c:\windows\system32\slmgr.vbs /ipk <kms-client-setup-key>
    cscript c:\windows\system32\slmgr.vbs /ato
    

    Ad esempio, se si usa Windows Server 2016 Datacenter, il primo comando verrà visualizzato come segue:

    cscript c:\windows\system32\slmgr.vbs /ipk CB7KF-BWN84-R7R2Y-793K2-8XDDG
    

Parte 2: Verificare se la macchina virtuale si trova dietro un servizio di bilanciamento del carico interno dello SKU Standard

Seguire questa procedura per verificare se la macchina virtuale si trova dietro un servizio di bilanciamento del carico interno dello SKU Standard che blocca il traffico Internet in uscita per impostazione predefinita:

  1. In portale di Azure, cercare e selezionare Macchine virtuali.

  2. Nell'elenco delle macchine virtuali selezionare il nome della macchina virtuale.

  3. Nel riquadro dei menu per la macchina virtuale individuare l'intestazione Rete e quindi selezionare Bilanciamento del carico. Se viene visualizzato un messaggio che indica Nessuna risorsa di bilanciamento del carico da visualizzare, la macchina virtuale non si trova dietro alcun servizio di bilanciamento del carico. In questo caso, è possibile passare alla parte 3: Verificare la connettività tra la macchina virtuale e il servizio del Servizio di gestione delle chiavi di Azure.

  4. Se viene visualizzata una risorsa del servizio di bilanciamento del carico, selezionare il nome del servizio di bilanciamento del carico per passare alla pagina Panoramica del servizio di bilanciamento del carico.

  5. Nel riquadro dei menu del servizio di bilanciamento del carico selezionare Proprietà.

  6. Nella pagina Proprietà individuare i valori per SKU e Tipo di bilanciamento del carico e quindi vedere la tabella seguente per le conclusioni.

    Valori di SKU e tipo di bilanciamento del carico Conclusione
    Il valore dello SKU è Standard e il valore del tipo di bilanciamento del carico è Private. La macchina virtuale si trova dietro un servizio di bilanciamento del carico interno dello SKU Standard che blocca il traffico Internet in uscita per impostazione predefinita. Per abilitare la connettività in uscita, vedere Soluzione 2: (Per il servizio di bilanciamento del carico interno standard) Usare un gateway NAT o un servizio di bilanciamento del carico pubblico standard.
    Il valore dello SKU non è Standard e il valore del tipo di bilanciamento del carico è Public. La macchina virtuale non si trova dietro un servizio di bilanciamento del carico interno dello SKU Standard e il traffico Internet in uscita non è bloccato per impostazione predefinita. Continuare con la parte 3: Verificare la connettività tra la macchina virtuale e il servizio Del Servizio di gestione delle chiavi di Azure.

Parte 3: Verificare la connettività tra la macchina virtuale e il servizio del Servizio di gestione delle chiavi di Azure

  1. Verificare che la macchina virtuale sia configurata per l'uso del server KMS di Azure corretto. A tale scopo, eseguire il comando script di Software License Manager seguente:

    Invoke-Expression "$env:windir\system32\cscript.exe $env:windir\system32\slmgr.vbs /skms azkms.core.windows.net:1688"
    

    Questo comando deve restituire il testo seguente:

    Nome del computer del Servizio di gestione delle chiavi impostato su kms.core.windows.net:1688.

  2. Assicurarsi che il firewall nella macchina virtuale non blocchi il traffico di rete in uscita verso l'endpoint del Servizio di gestione delle chiavi sulla porta 1688. A tale scopo, applicare una delle opzioni seguenti:

    • Verificare la connettività eseguendo il cmdlet Test-NetConnection in PowerShell:

      Test-NetConnection azkms.core.windows.net -port 1688
      

      Se il tentativo di connessione è consentito, il cmdlet visualizza "TcpTestSucceeded: True" nel testo di output.

    • Verificare la connettività eseguendo lo strumento PsPing:

      .\psping.exe azkms.core.windows.net:1688
      

      Nell'output del comando la riga da secondo a ultimo dovrebbe essere simile al testo seguente:

      Sent = 4, Received = 4, Lost = 0 (0% loss)

      Se Lost è maggiore di 0 (zero), la macchina virtuale non ha connettività al server del Servizio di gestione delle chiavi. In questo caso, se la macchina virtuale si trova in una rete virtuale e ha un server DNS personalizzato specificato, è necessario assicurarsi che il server DNS possa risolvere il nome di azkms.core.windows.net dominio. In caso contrario, modificare il server DNS in uno che possa risolvere azkms.core.windows.net.

      Note

      Se si rimuovono tutti i server DNS da una rete virtuale, le macchine virtuali usano il servizio DNS interno di Azure. Questo servizio può risolvere kms.core.windows.net.

  3. Usare un test hop successivo di Azure Network Watcher per verificare che il tipo di hop successivo sia Internet dalla macchina virtuale interessata a determinate destinazioni. Per applicare il test dell'hop successivo, seguire questa procedura:

    1. In portale di Azure, cercare e selezionare Macchine virtuali.

    2. Nell'elenco delle macchine virtuali selezionare il nome della macchina virtuale.

    3. Nel riquadro dei menu della macchina virtuale individuare l'intestazione Guida e quindi selezionare Risoluzione dei problemi di connessione.

    4. Nella pagina Risoluzione dei problemi di connessione della macchina virtuale specificare i valori di campo seguenti.

      Campo valore
      Tipo di destinazione Specificare manualmente
      URI, FQDN o indirizzo IP 20.118.99.224, 40.83.235.53 (per azkms.core.windows.net) o l'INDIRIZZO IP dell'endpoint del Servizio di gestione delle chiavi appropriato applicabile all'area geografica
      Porta di destinazione 1688
      Porta di origine 1688
      Test di diagnostica Hop successivo
    5. Selezionare il pulsante Esegui test di diagnostica.

    6. Al termine dei test di diagnostica, esaminare la casella Risultati visualizzata sotto il pulsante. Il test Hop successivo (dall'origine) deve avere un valore Di stato riuscito e il valore Dettagli deve includere tipo hop successivo: Internet nel testo. Se il tipo di hop successivo è Internet, ripetere il test dell'hop successivo per ognuno degli indirizzi IP rimanenti. Tuttavia, se il tipo di hop successivo viene visualizzato come VirtualAppliance, VirtualNetworkGateway o qualsiasi elemento diverso da Internet, è probabile che si verifichi uno degli scenari seguenti:

      • Esiste una route predefinita che instrada il traffico all'esterno di Azure prima che il traffico venga inviato all'endpoint del Servizio di gestione delle chiavi di Azure.

      • Il traffico viene bloccato in un punto qualsiasi lungo il percorso.

      Per questi scenari, vedere Soluzione 1: (Per il tunneling forzato) Usare la route personalizzata di Azure per instradare il traffico di attivazione al server del Servizio di gestione delle chiavi di Azure.

  4. Dopo aver verificato che una connessione a azkms.core.windows.net abbia esito positivo, eseguire il comando seguente al prompt di Windows PowerShell con privilegi elevati. Questo comando tenta di attivare più volte la macchina virtuale Windows:

    1..12 | ForEach-Object {
        Invoke-Expression "$env:windir\system32\cscript.exe $env:windir\system32\slmgr.vbs /ato";
        Start-Sleep 5
    }
    

    Se il tentativo di attivazione ha esito positivo, il comando visualizza un messaggio simile al testo seguente:

    Attivazione di Windows(R), Server Datacenter Edition (<kms-client-product-key>) ... Prodotto attivato correttamente.

Soluzione 1: (Per il tunneling forzato) Usare la route personalizzata di Azure per instradare il traffico di attivazione al server del Servizio di gestione delle chiavi di Azure

Se la causa è uno scenario di tunneling forzato in cui il traffico viene instradato all'esterno di Azure, rivolgersi all'amministratore di rete per determinare il corso corretto dell'azione. Una possibile soluzione è descritta nella sezione Soluzione dell'attivazione di Windows non riesce nello scenario di tunneling forzato. Applicare questa soluzione se è coerente con i criteri dell'organizzazione.

Soluzione 2: (per il servizio di bilanciamento del carico interno standard) Usare un gateway NAT o un servizio di bilanciamento del carico pubblico standard

Se un servizio di bilanciamento del carico interno standard blocca il traffico, esistono due approcci diversi per risolvere il problema, come descritto in Usare SNAT (Source Network Address Translation) per le connessioni in uscita:

È consigliabile usare una configurazione NAT di Azure Rete virtuale per la connettività in uscita nelle distribuzioni di produzione. Per altre informazioni sul gateway NAT di Azure, vedere Che cos'è il gateway NAT di Azure?

Tuttavia, se è necessario bloccare tutto il traffico Internet, assicurarsi di negare l'accesso a Internet in uscita usando una regola del gruppo di sicurezza di rete (NSG) nella subnet della macchina virtuale che è necessario attivare. Si noti che il traffico di attivazione del sistema operativo verso gli indirizzi IP del Servizio di gestione delle chiavi sulla porta 1688 rimane abilitato a causa delle regole interne della piattaforma.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.