Dela via


Vattenstämpeln för Windows-aktivering fortsätter att visas

Gäller för: ✔️ Virtuella Windows-datorer som kör Windows Server 2022 Datacenter Azure Edition

I det här dokumentet beskrivs hur du löser den fortsatta förekomsten av en Windows-aktiveringsvattenstämpel på virtuella Microsoft Azure-datorer.

Förutsättningar

Symptom

När du använder en virtuell Azure-dator (VM) som kör Windows Server 2022 Datacenter Azure Edition får du följande symptom:

  • Du ser en vattenstämpel på skrivbordet som innehåller följande meddelande:

    Aktivera Windows. Gå till Inställningar för att aktivera Windows.

    Den här vattenstämpeln anger att Windows-aktiveringsstatusen inte är äkta.

  • När du öppnar appen Inställningar och väljer Systemaktivering> anger fältet Programtillstånd ett aktiveringsfel.

  • När du öppnar ett upphöjt kommandotolksfönster och kör följande slmgr.vbs-volymaktiveringsskript, visar utdata att aktiveringen av nyckelhanteringstjänst (KMS)s (KMS) lyckas, men de två första symptomen kvarstår:

    cscript c:\windows\system32\slmgr.vbs /dlv
    
  • När du startar om eller loggar in på den virtuella datorn visas ett popup-fönster med följande meddelande:

    Din virtuella Windows Server 2022 Datacenter Azure Edition-dator har inaktiverats på grund av att du inte kör Azure eller ett Azure Stack-hypervisor-program som stöds eller att du inte har aktiverat Azure-förmåner på Azure Stack som stöds. Om du vill aktivera Azure-förmåner går du till dina klusterinställningar i Windows Administrationscenter > Aktivera Azure-förmåner.

Orsak 1: Anslutningsproblem med Azure Instance Metadata Service

Den virtuella Azure-datorn kan inte upprätta en anslutning till IMDS-slutpunkten (Azure Instance Metadata Service), vilket är viktigt för att hämta aktiveringstoken.

Så här avgör du om den virtuella datorns gästoperativsystem kan kommunicera med IMDS

Kör följande PowerShell-skript beroende på din version av PowerShell för att kontrollera om metadata tas emot från IMDS.

  • PowerShell 6 och senare versioner

    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 och tidigare versioner

    $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
    

Om du får ett lyckat svar visas metadatainformationen från den virtuella datorn, till exempel följande utdata:

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

Annars innebär det att anslutningen till IMDS-trådservern blockeras någonstans och att åtkomst till den måste tillåtas. IP-adressen för IMDS-servern är 169.254.169.254. Åtgärda anslutningsproblemet genom att gå till Lösning 1: Kringgå webbproxys på den virtuella datorn.

Mellanliggande certifikat som är viktiga för aktiveringsprocessen har upphört att gälla.

Mer information finns i Azure Instance Metadata Service-Attested data TLS: Viktiga ändringar finns här.

Så här avgör du om några certifikat saknas

Kör följande PowerShell-skript för att söka efter saknade certifikat:

# 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
}

Om några certifikat saknas visas utdata som liknar följande:

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

Åtgärda certifikatproblemet genom att gå till Lösning 2: Kontrollera att brandväggar och proxyservrar har konfigurerats för att tillåta nedladdning av certifikat.

Lösning 1: Kringgå webbproxyservrar på den virtuella datorn

IMDS är ett REST-API som är tillgängligt på en välkänd, icke-dirigerbar IP-adress (169.254.169.254). IMDS-slutpunkten är endast tillgänglig från den virtuella datorn på följande URI: http://169.254.169.254/metadata/instance. Kommunikationen mellan den virtuella datorn och IMDS lämnar aldrig värden. Låt http-klienterna kringgå webbproxyservrar på den virtuella datorn medan de frågar IMDS. Kontrollera också att klienterna behandlar 169.254.169.254 IP-adressen på samma sätt som de behandlar IP-adressen 168.63.129.16. Följ dessa steg för att kontrollera att den här direkta nätverksanslutningen finns:

Kommentar

168.63.129.16 är en Microsoft-ägd virtuell offentlig IP-adress som används för kommunikation med Azure-resurser.

  1. Om du vill visa den lokala routningstabellen på den virtuella datorn kör du kommandot routningsutskrift :

    route print
    
  2. Om du vill hitta routningsposten för IMDS-målet går du till Active Routes avsnittet i IPv4 Route Table utdata och letar sedan reda på raden som innehåller 169.254.169.254 IP-adressen i Network Destination kolumnen.

    Nätverksmål Nätmask Gateway Gränssnitt Mått
    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 På-länk 127.0.0.1 331
    127.0.0.1 255.255.255.255 På-länk 127.0.0.1 331
    127.255.255.255 255.255.255.255 På-länk 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
    ... ... ... ... ...

    I exempeltabellens utdata finns posten IMDS-mål på den sista raden och motsvarande nätverksgränssnitt är värdet i kolumnen i den Interface raden. (I det här exemplet är 172.16.69.7nätverksgränssnittet .)

  3. Om du vill visa IP-konfigurationen för den virtuella datorn kör du kommandot ipconfig :

    ipconfig /all
    
  4. I ipconfig-kommandots utdata letar du reda på IP-konfigurationen IPv4 Address där fältet matchar nätverksgränssnittsvärdet för IMDS-posten (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
    ...
    

    I ipconfig-exempelutdata är Ethernet adapter EthernetIP-konfigurationen som innehåller värdet för nätverksgränssnittet för IMDS-posten .

  5. I IP-konfigurationen som du har hittat kopierar du MAC-adressen (Media Access Control) och den primära privata IP-adressen som den virtuella datorn använder. MAC-adressen visas i fältet Physical Address och den primära privata IP-adressen visas i fältet IPv4 Address . I det här exemplet är 00-0D-3A-E5-1C-C0 MAC-adressen och den primära privata IP-adressen respektive och 172.16.69.7.

  6. Kontrollera om MAC och primära privata IP-adresser som Azure använder för den virtuella datorn matchar MAC-adressen och den primära privata IP-adressen som gästoperativsystemet för den virtuella datorn faktiskt använder (adresserna som du hittade i det tidigare steget). För att avgöra vad Azure använder som MAC-adress använder du Azure CLI. För att avgöra vad Azure använder som den primära privata IP-adressen undersöker du nätverkskonfigurationen i Azure Portal.

    • Hitta MAC-adressen (med hjälp av Azure CLI i ett PowerShell-skript)

      Kör följande PowerShell-skript som anropar Azure CLI-kommandon. Det här skriptet anropar kommandot az vm nic list för att samla in namnen på nätverksgränssnitten på den virtuella datorn. Sedan anropas kommandot az vm nic show för att visa namnet på varje nätverksgränssnitt, oavsett om nätverksgränssnittet är det primära nätverksgränssnittet (True eller False) och MAC-adressen för nätverksgränssnittet:

      Kommentar

      I kommandona representerar "nic" nätverksgränssnittet, inte ett nätverksgränssnittskort.

      # 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
      
    • Hitta den primära privata IP-adressen (med hjälp av Azure Portal):

      1. I Azure-portalen söker du efter och väljer Virtuella datorer.

      2. I listan över virtuella datorer väljer du namnet på den virtuella datorn.

      3. På fliken Egenskaper på sidan Översikt över den virtuella datorn letar du upp rubriken Nätverk.

      4. I fältet Privat IP-adress kopierar du den visade IPv4-adressen.

  7. Om MAC-adresserna eller de primära privata IP-adresserna inte är identiska mellan Azure och den virtuella datorns gästoperativsystem använder du olika routningskommandon för att uppdatera routningstabellen så att det primära nätverksgränssnittet och IP-adressen är riktade.

Lösning 2: Se till att brandväggar och proxyservrar är konfigurerade för att tillåta nedladdning av certifikat

  1. Kontrollera om KB-5036909 är installerat. Annars installerar du den. Du kan hämta den från Microsoft Update-katalogen.

  2. Om du har installerat uppdateringen men fortfarande stöter på problemet kontrollerar du att systemets brandväggar och proxyservrar har konfigurerats för att tillåta nedladdning av certifikat. Mer information finns i Listan över nedladdningar och återkallande av certifikat.

    Du kan också ladda ned och installera alla certifikat direkt från kedjorna för rotcertifikat och underordnade certifikatutfärdare.

    Kommentar

    Se till att välja lagringsplats som lokal dator i installationsguiden.

  3. Öppna kommandotolken som administratör, navigera till c:\windows\system32 och kör fclip.exe.

  4. Starta om den virtuella datorn eller logga ut och logga sedan in igen. Du ser att vattenstämpeln på startsidan inte längre visas och att fältet Programtillståndskärmen Inställningar>aktivering rapporterar att det lyckades.

Mer information

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.