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.
Orsak 2: Certifikatrelaterat problem
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.
Om du vill visa den lokala routningstabellen på den virtuella datorn kör du kommandot routningsutskrift :
route print
Om du vill hitta routningsposten för IMDS-målet går du till
Active Routes
avsnittet iIPv4 Route Table
utdata och letar sedan reda på raden som innehåller169.254.169.254
IP-adressen iNetwork 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 är172.16.69.7
nätverksgränssnittet .)Om du vill visa IP-konfigurationen för den virtuella datorn kör du kommandot ipconfig :
ipconfig /all
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 Ethernet
IP-konfigurationen som innehåller värdet för nätverksgränssnittet för IMDS-posten .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ältetIPv4 Address
. I det här exemplet är00-0D-3A-E5-1C-C0
MAC-adressen och den primära privata IP-adressen respektive och172.16.69.7
.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
ellerFalse
) 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):
I Azure-portalen söker du efter och väljer Virtuella datorer.
I listan över virtuella datorer väljer du namnet på den virtuella datorn.
På fliken Egenskaper på sidan Översikt över den virtuella datorn letar du upp rubriken Nätverk.
I fältet Privat IP-adress kopierar du den visade IPv4-adressen.
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
Kontrollera om KB-5036909 är installerat. Annars installerar du den. Du kan hämta den från Microsoft Update-katalogen.
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.
Öppna kommandotolken som administratör, navigera till c:\windows\system32 och kör fclip.exe.
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ånd på skä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.