Condividi tramite


La filigrana di attivazione di Windows continua a essere visualizzata

Si applica a: ✔️ Macchine virtuali Windows che eseguono Windows Server 2022 Datacenter Azure Edition

Questo documento illustra come risolvere la presenza continua di una filigrana di attivazione di Windows nelle macchine virtuali di Microsoft Azure.

Prerequisiti

Sintomi

Quando si usa una macchina virtuale di Azure che esegue Windows Server 2022 Datacenter Azure Edition, si verificano i sintomi seguenti:

  • Sul desktop viene visualizzata una filigrana contenente il messaggio seguente:

    Attivare Windows. Passare a Impostazioni per attivare Windows.

    Questa filigrana indica che lo stato di attivazione di Windows non è originale.

  • Quando si apre l'app Impostazioni e si seleziona Attivazione sistema>, il campo Stato applicazione indica un errore di attivazione.

  • Quando si apre una finestra del prompt dei comandi con privilegi elevati ed si esegue lo script di attivazione dei contratti multilicenza slmgr.vbs seguente, l'output mostra che l'attivazione dei Servizio di gestione delle chiavi (KMS) ha esito positivo, ma i primi due sintomi rimangono:

    cscript c:\windows\system32\slmgr.vbs /dlv
    
  • Quando si riavvia o si accede alla macchina virtuale, viene visualizzata una finestra popup con il messaggio seguente:

    La macchina virtuale Di Azure Edition di Windows Server 2022 Datacenter è stata disattivata perché non è in esecuzione in Azure o in un hypervisor di Azure Stack supportato o che non sono stati abilitati i vantaggi di Azure in Azure Stack supportati. Per abilitare i vantaggi di Azure, passare alle impostazioni del cluster in Windows Admin Center > Abilitare i vantaggi di Azure.

Causa 1: Problema di connessione al servizio metadati dell'istanza di Azure

La macchina virtuale di Azure non riesce a stabilire una connessione con l'endpoint IMDS (Azure Instance Metadata Service), essenziale per ottenere il token di attivazione.

Come determinare se il sistema operativo guest della macchina virtuale può comunicare correttamente con IMDS

Eseguire lo script di PowerShell seguente a seconda della versione di PowerShell per verificare se i metadati vengono ricevuti da IMDS.

  • PowerShell 6 e versioni successive

    Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri 
    http://169.254.169.254/metadata/attested/document?api-version=2020-09-01
    | Format-List * | Out-File "IMDSResponse1.txt"
    
  • PowerShell 5 e versioni precedenti

    $Proxy=New-object System.Net.WebProxy
    $WebSession=new-object Microsoft.PowerShell.Commands.WebRequestSession
    $WebSession.Proxy=$Proxy
    Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" -WebSession $WebSession
    

Se si ottiene una risposta con esito positivo, verranno visualizzate le informazioni sui metadati della macchina virtuale, ad esempio l'output seguente:

compute                                                                                                                                                                  
-------                                                                                                                                                                  
@{azEnvironment=AzurePublicCloud; customData=; evictionPolicy=; isHostCompatibilityLayerVm=true; licenseType=; location=eastus; name=testWs2022; offer=WindowsServer; ...

In caso contrario, significa che la connessione al server di trasmissione IMDS è bloccata da qualche parte e l'accesso a esso deve essere consentito. L'indirizzo IP del server IMDS è 169.254.169.254. Per risolvere il problema di connessione, passare alla soluzione 1: Ignorare i proxy Web all'interno della macchina virtuale.

I certificati intermedi cruciali per il processo di attivazione sono scaduti.

Per altre informazioni, vedere Tls dei dati con attestazione del servizio metadati dell'istanza di Azure TLS: Modifiche critiche.

Come determinare se mancano certificati

Eseguire lo script di PowerShell seguente per verificare la presenza di certificati mancanti:

# Get the signature
# Powershell 5.1 does not include -NoProxy
$attestedDoc = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri http://169.254.169.254/metadata/attested/document?api-version=2018-10-01
#$attestedDoc = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/attested/document?api-version=2018-10-01
 
# Decode the signature
$signature = [System.Convert]::FromBase64String($attestedDoc.signature)
 
# Get certificate chain
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]($signature)
$chain = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Chain
 
if (-not $chain.Build($cert)) {
   # Print the Subject of the issuer
   Write-Host $cert.Subject
   Write-Host $cert.Thumbprint
   Write-Host "------------------------"
   Write-Host $cert.Issuer
   Write-Host "------------------------"
   Write-Host "Certificate not found: '$($cert.Issuer)'" -ForegroundColor Red
   Write-Host "Please refer to the following link to download missing certificates:" -ForegroundColor Yellow
   Write-Host "https://learn.microsoft.com/en-us/azure/security/fundamentals/azure-ca-details?tabs=certificate-authority-chains" -ForegroundColor Yellow
} else {
   # Print the Subject of each certificate in the chain
   foreach($element in $chain.ChainElements) {
       Write-Host $element.Certificate.Subject
       Write-Host $element.Certificate.Thumbprint
       Write-Host "------------------------"
   }
 
   # Get the content of the signed document
   Add-Type -AssemblyName System.Security
   $signedCms = New-Object -TypeName System.Security.Cryptography.Pkcs.SignedCms
   $signedCms.Decode($signature);
   $content = [System.Text.Encoding]::UTF8.GetString($signedCms.ContentInfo.Content)
   Write-Host "Attested data: " $content
   $json = $content | ConvertFrom-Json
}

Se mancano certificati, verrà visualizzato un output simile al seguente:

CN=metadata.azure.com, O=Microsoft Corporation, L=Redmond, S=WA, C=US
3ACCC393D3220E40F09A69AC3251F6F391172C32
------------------------
CN=Microsoft Azure RSA TLS Issuing CA 04, O=Microsoft Corporation, C=US
------------------------
Certificate not found: 'CN=Microsoft Azure RSA TLS Issuing CA 04, O=Microsoft Corporation, C=US'
Please refer to the following link to download missing certificates:
https://learn.microsoft.com/en-us/azure/security/fundamentals/azure-ca-details?tabs=certificate-authority-chains

Per risolvere il problema del certificato, passare alla soluzione 2: Assicurarsi che i firewall e i proxy siano configurati per consentire i download dei certificati.

Soluzione 1: Ignorare i proxy Web all'interno della macchina virtuale

IMDS è un'API REST disponibile in un indirizzo IP noto e non instradabile (169.254.169.254). L'endpoint IMDS è accessibile dall'interno della macchina virtuale solo all'URI seguente: http://169.254.169.254/metadata/instance. La comunicazione tra la macchina virtuale e IMDS non lascia mai l'host. Chiedere ai client HTTP di ignorare i proxy Web all'interno della macchina virtuale mentre eseguono query su IMDS. Assicurarsi inoltre che i client considerino l'indirizzo 169.254.169.254 IP nello stesso modo in cui trattano l'indirizzo IP 168.63.129.16. Per verificare che la connessione di rete diretta esista, seguire questa procedura:

Note

168.63.129.16 è un indirizzo IP pubblico virtuale di proprietà di Microsoft usato per comunicare con le risorse di Azure.

  1. Per visualizzare la tabella di routing locale nella macchina virtuale, eseguire il comando di stampa della route:

    route print
    
  2. Per individuare la voce di routing per la destinazione IMDS, passare alla Active Routes sezione dell'output IPv4 Route Table e quindi trovare la riga contenente l'indirizzo 169.254.169.254 IP nella Network Destination colonna.

    Destinazione di rete Netmask Gateway Interfaccia Metric
    0.0.0.0 0.0.0.0 172.16.69.1 172.16.69.7 10
    127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
    127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
    127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
    168.63.129.16 255.255.255.255 172.16.69.1 172.16.69.7 11
    169.254.169.254 255.255.255.255 172.16.69.1 172.16.69.7 11
    ... ... ... ... ...

    Nell'output della tabella di route di esempio, la voce di destinazione IMDS si trova nell'ultima riga e l'interfaccia di rete corrispondente è il valore nella colonna all'interno di Interface tale riga. In questo esempio l'interfaccia di rete è 172.16.69.7.)

  3. Per visualizzare la configurazione IP della macchina virtuale, eseguire il comando ipconfig :

    ipconfig /all
    
  4. Nell'output del comando ipconfig trovare la configurazione IP in cui il IPv4 Address campo corrisponde al valore dell'interfaccia di rete della voce IMDS (172.16.69.7):

    ...
    Ethernet adapter Ethernet:
    
    Connection-specific DNS Suffix  . : xic3mnxjiefupcwr1mcs1rjiqa.cx.internal.cloudapp.net
    Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
    Physical Address. . . . . . . . . : 00-0D-3A-E5-1C-C0
    DHCP Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes
    Link-local IPv6 Address . . . . . : fe80::3166:ce5a:2bd5:a6d1%3(Preferred)
    IPv4 Address. . . . . . . . . . . : 172.16.69.7(Preferred)
    Subnet Mask . . . . . . . . . . . : 255.255.255.0
    ...
    

    Nell'output ipconfig di esempio, la configurazione IP che contiene il valore dell'interfaccia di rete della voce IMDS è Ethernet adapter Ethernet.

  5. Nella configurazione IP che si trova copiare l'indirizzo MAC (Media Controllo di accesso) e l'indirizzo IP privato primario usato dalla macchina virtuale. L'indirizzo MAC viene visualizzato nel Physical Address campo e l'indirizzo IP privato primario viene visualizzato nel IPv4 Address campo . In questo esempio, l'indirizzo MAC e l'indirizzo IP privato primario sono 00-0D-3A-E5-1C-C0 rispettivamente e 172.16.69.7.

  6. Controllare se gli indirizzi IP privati mac e primari usati da Azure per la macchina virtuale corrispondono all'indirizzo MAC e all'indirizzo IP privato primario usato dal sistema operativo guest della macchina virtuale (gli indirizzi trovati nel passaggio precedente). Per determinare l'uso di Azure come indirizzo MAC, usare l'interfaccia della riga di comando di Azure. Per determinare l'uso di Azure come indirizzo IP privato primario, esaminare la configurazione di rete nel portale di Azure.

    • Trovare l'indirizzo MAC (usando l'interfaccia della riga di comando di Azure in uno script di PowerShell)

      Eseguire lo script di PowerShell seguente che richiama i comandi dell'interfaccia della riga di comando di Azure. Questo script richiama il comando az vm nic list per raccogliere i nomi delle interfacce di rete nella macchina virtuale. Richiama quindi il comando az vm nic show per visualizzare il nome di ogni interfaccia di rete, indipendentemente dal fatto che tale interfaccia di rete sia l'interfaccia di rete primaria (True o False) e l'indirizzo MAC dell'interfaccia di rete:

      Note

      Nei comandi "nic" rappresenta l'interfaccia di rete, non una scheda di interfaccia di rete.

      # Placeholder variable definitions
      $ResourceGroup = "<resource-group-name>"
      $VmName = "<virtual-machine-name>"
      
      # Code
      $NicNames = az vm nic list --resource-group $ResourceGroup --vm-name $VmName |
          ConvertFrom-Json | Foreach-Object { $_.id.Split('/')[-1] }
      foreach($NicName in $NicNames)
      {
          az vm nic show --resource-group $ResourceGroup --vm-name $VmName --nic $NicName |
              ConvertFrom-Json | Format-Table -Property name, primary, macAddress
      }
      
      name       primary macAddress
      ----       ------- ----------
      wintest767    True 00-0D-3A-E5-1C-C0
      
    • Trovare l'indirizzo IP privato primario (usando il portale di Azure):

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

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

      3. Nella scheda Proprietà della pagina Panoramica della macchina virtuale individuare l'intestazione Rete.

      4. Nel campo Indirizzo IP privato copiare l'indirizzo IPv4 visualizzato.

  7. Se gli indirizzi MAC o gli indirizzi IP privati primari non sono identici tra Azure e il sistema operativo guest della macchina virtuale, usare vari comandi di route per aggiornare la tabella di routing in modo che l'interfaccia di rete primaria e l'indirizzo IP siano destinati.

Soluzione 2: Assicurarsi che i firewall e i proxy siano configurati per consentire i download dei certificati

  1. Controllare se è installato 5036909 KB. In caso contrario, installarlo. È possibile ottenerlo dal Catalogo di Microsoft Update.

  2. Se l'aggiornamento è stato installato ma si verifica comunque il problema, verificare che i firewall e i proxy del sistema siano configurati per consentire il download dei certificati. Per altre informazioni, vedere Download di certificati ed elenchi di revoche.

    In alternativa, è possibile scaricare e installare tutti i certificati direttamente dalle catene di autorità di certificazione radice e subordinata.

    Note

    Assicurarsi di selezionare il percorso dell'archivio come Computer locale nell'installazione guidata.

  3. Aprire prompt dei comandi come amministratore, passare a c:\windows\system32 ed eseguire fclip.exe.

  4. Riavviare la macchina virtuale o disconnettersi e quindi eseguire di nuovo l'accesso. Si noterà che la filigrana nella home page non è più visualizzata e il campo Stato applicazione nella schermata Attivazione impostazioni>segnala l'esito positivo.

Ulteriori informazioni

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.