Windows のアクティブ化基準値が引き続き表示される
適用対象:Windows ✔️ Server 2022 Datacenter Azure Edition を実行している Windows VM の
このドキュメントでは、Microsoft Azure 仮想マシンでの Windows ライセンス認証基準値の継続的な存在を解決する方法について説明します。
前提条件
現象
Windows Server 2022 Datacenter Azure Edition を実行する Azure 仮想マシン (VM) を使用すると、次の現象が発生します。
デスクトップに、次のメッセージを含む透かしが表示されます。
Windows のライセンス認証を行います。 設定を開き、Windows のライセンス認証を行ってください。
この透かしは、Windows のライセンス認証の状態が正規の状態ではないことを示します。
Settings アプリを開き、System>Activation を選択すると、アプリケーションの状態フィールドはアクティブ化エラーを示します。
管理者特権のコマンド プロンプト ウィンドウを開き、次の slmgr.vbs ボリューム ライセンス認証スクリプトを実行すると、キー管理サービス (KMS) のアクティブ化が成功したことが出力に示されますが、最初の 2 つの現象は残ります。
cscript c:\windows\system32\slmgr.vbs /dlv
VM を再起動またはサインインすると、次のメッセージが表示されたポップアップ ウィンドウが表示されます。
Windows Server 2022 Datacenter Azure Edition VM は、Azure またはサポートされている Azure Stack ハイパーバイザーで実行していないため、またはサポートされている Azure Stack で Azure 特典を有効にしていないため、非アクティブ化されています。 Azure 特典を有効にするには、Windows Admin Center のクラスター設定に移動 > Azure 特典を有効にします。
原因 1: Azure Instance Metadata Service の接続に関する問題
Azure VM は、アクティブ化トークンを取得するために不可欠な Azure Instance Metadata Service (IMDS) エンドポイントとの接続を確立できません。
VM ゲスト OS が IMDS と正常に通信できるかどうかを判断する方法
PowerShell のバージョンに応じて、次の PowerShell スクリプトを実行して、メタデータが IMDS から受信されているかどうかを確認します。
PowerShell 6 以降のバージョン
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 以前のバージョン
$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
正常な応答が得られると、次の出力など、VM からのメタデータ情報が表示されます。
compute
-------
@{azEnvironment=AzurePublicCloud; customData=; evictionPolicy=; isHostCompatibilityLayerVm=true; licenseType=; location=eastus; name=testWs2022; offer=WindowsServer; ...
そうでない場合は、IMDS ワイヤ サーバーへの接続がどこかでブロックされ、そのサーバーへのアクセスを許可する必要があることを意味します。 IMDS サーバーの IP が 169.254.169.254
。 接続の問題を解決するには、「 ソリューション 1: VM 内の Web プロキシをバイパスするに関するページを参照してください。
原因 2: 証明書に関連する問題
アクティブ化プロセスに不可欠な中間証明書の有効期限が切れています。
詳細については、「 Azure Instance Metadata Service-Attested data TLS: Critical changes are hereを参照してください。
証明書がないかどうかを確認する方法
次の PowerShell スクリプトを実行して、不足している証明書があるかどうかを確認します。
# 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
}
証明書がない場合は、次のような出力が表示されます。
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
証明書の問題を解決するには、「 ソリューション 2: 証明書のダウンロードを許可するようにファイアウォールとプロキシが構成されていることを確認するに進みます。
解決策 1: VM 内の Web プロキシをバイパスする
IMDS は、ルーティング不可能な既知の IP アドレス (169.254.169.254
) で使用できる REST API です。 IMDS エンドポイントは、次の URI でのみ VM 内からアクセスできます: http://169.254.169.254/metadata/instance
。 VM と IMDS 間の通信がホストから離れることはありません。 HTTP クライアントが IMDS のクエリを実行している間に、VM 内の Web プロキシをバイパスするようにします。 また、クライアントが 169.254.169.254
IP アドレスを 168.63.129.16 IP アドレスと同じ方法で処理していることを確認。 この直接ネットワーク接続が存在することを確認するには、次の手順に従います。
Note
168.63.129.16
は、Azure リソースとの通信に使用される Microsoft 所有の仮想パブリック IP アドレスです。
VM 上のローカル ルーティング テーブルを表示するには、 route print コマンドを実行します。
route print
IMDS ターゲットのルーティング エントリを見つけるには、
IPv4 Route Table
出力のActive Routes
セクションに移動し、Network Destination
列で169.254.169.254
IP アドレスを含む行を見つけます。ネットワーク宛先 Netmask ゲートウェイ Interface メトリック 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 ... ... ... ... ... サンプル ルート テーブルの出力では、IMDS ターゲット エントリは最後の行にあり、対応するネットワーク インターフェイスはその行内の
Interface
列の値です。 (この例では、ネットワーク インターフェイスは172.16.69.7
。VM の IP 構成を表示するには、 ipconfig コマンドを実行します。
ipconfig /all
ipconfig コマンド出力で、
IPv4 Address
フィールドが IMDS エントリ (172.16.69.7
) のネットワーク インターフェイス値と一致する IP 構成を見つけます。... 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 ...
サンプル ipconfig 出力では、IMDS エントリのネットワーク インターフェイス値を含む IP 構成が
Ethernet adapter Ethernet
。見つけた IP 構成で、メディア アクセス制御 (MAC) アドレスと、VM が使用するプライマリ プライベート IP アドレスをコピーします。 MAC アドレスが
Physical Address
フィールドに表示され、プライマリ プライベート IP アドレスがIPv4 Address
フィールドに表示されます。 この例では、MAC アドレスとプライマリ プライベート IP アドレスがそれぞれ00-0D-3A-E5-1C-C0
され、172.16.69.7
されます。Azure が VM に使用する MAC とプライマリ プライベート IP アドレスが、VM のゲスト OS が実際に使用する MAC アドレスとプライマリ プライベート IP アドレス (前の手順で見つけたアドレス) と一致するかどうかを確認します。 MAC アドレスとして Azure が使用する内容を確認するには、Azure CLI を使用します。 プライマリ プライベート IP アドレスとして Azure が使用する内容を確認するには、Azure portal でネットワーク構成を調べます。
MAC アドレスを検索する (PowerShell スクリプトで Azure CLI を使用)
Azure CLI コマンドを呼び出す次の PowerShell スクリプトを実行します。 このスクリプトは、 az vm nic list コマンドを呼び出して、VM 上のネットワーク インターフェイスの名前を収集します。 次に、 az vm nic show コマンドを呼び出して、各ネットワーク インターフェイスの名前、そのネットワーク インターフェイスがプライマリ ネットワーク インターフェイス (
True
またはFalse
)、およびネットワーク インターフェイスの MAC アドレスを表示します。Note
コマンドでは、"nic" はネットワーク インターフェイス カードではなく、ネットワーク インターフェイスを表します。
# 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
(Azure portal を使用して) プライマリ プライベート IP アドレスを見つけます。
Azure portal で、[仮想マシン] を検索して選択します。
VM の一覧で、VM の名前を選択します。
VM Overview ページの Properties タブで、Networking 見出しを見つけます。
Private IP アドレスフィールドで、表示されている IPv4 アドレスをコピーします。
MAC アドレスまたはプライマリ プライベート IP アドレスが Azure と VM ゲスト OS の間で同じでない場合は、さまざまな route コマンドを使用して、プライマリ ネットワーク インターフェイスと IP アドレスが対象になるようにルーティング テーブルを更新します。
解決策 2: 証明書のダウンロードを許可するようにファイアウォールとプロキシが構成されていることを確認する
KB 5036909がインストールされているかどうかを確認します。 インストールされていない場合は、インストールします。 Microsoft Update Catalog から取得できます。
更新プログラムをインストールしても問題が発生する場合は、証明書のダウンロードを許可するようにシステムのファイアウォールとプロキシが構成されていることを確認します。 詳細については、「 Certificate のダウンロードと失効リストを参照してください。
または、 root および下位証明機関チェーンからすべての証明書を直接ダウンロードしてインストール。
Note
インストール ウィザードで、ストアの場所 ローカル コンピューター を選択してください。
管理者としてコマンド プロンプトを開き、 c:\windows\system32 に移動して、 fclip.exeを実行します。
VM を再起動するかサインアウトしてから、もう一度サインインします。 ホーム ページの透かしが表示されなくなり、Settings>Activation 画面の Application state フィールドが成功を報告します。
詳細
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。