免責事項:これは英文の記事「Verification of Secure Boot Certificate on Virtual Machines(424429)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
この記事では、更新されたセキュアブート証明書が仮想マシンの NVRAM に正しく登録されているかを確認する手順について説明します。Windows ゲストの場合は UEFI 変数を抽出してバイナリの確認を行い、Linux ゲストの場合は標準ユーティリティを使用します。
VMware vSphere ESXi 7.0
VMware vSphere ESXi 8.0
セキュアブート証明書が正常に更新されたことを確認するには、セキュアブート証明書の内容を直接確認する必要があります。Windowsオペレーティングシステムは UEFI 変数をバイナリ形式で取得するため、データをデコードして証明書を確認するには、特定の手順が必要です。
新しいセキュアブート証明書の存在を確認するには、ゲスト OS に適した手順に従ってください。
方法 1: Linux ゲスト OS での確認
Linux 上では、mokutil ユーティリティを使用して NVRAM に保存されているセキュアブートキーを直接表示できます。
Linux ゲスト OS にログインします。
以下のコマンドを実行して KEK または DB を確認します。
sudo mokutil --kek
sudo mokutil --db
出力結果を確認し、期待される証明書(Issuer、Subject、有効期間など)が存在するか検査します。表示されていれば更新は成功しています。
方法 2: Windows ゲスト OS での確認
Windows には NVRAM から証明書の詳細を簡単に表示する組み込みユーティリティがないため、データをエクスポートして Linux 環境を使用して解析します。
手順 2-1: UEFI 変数データのエクスポート (Windows 上)
管理者権限で Windows ゲスト OS にログインします。
PowerShell を開き、以下のコマンドを実行して KEK または DB のデータをバイナリファイルにエクスポートします。
$kekData = (Get-SecureBootUEFI -Name KEK).Bytes
[System.IO.File]::WriteAllBytes("C:\KEK.bin", $kekData)
作成された C:\KEK.bin ファイルを、efitools および openssl がインストールされた Linux 環境へ転送します。
手順 2-2: バイナリデータの解析 (Linux 上)
この手順は Linux システム (Ubuntu など) で実行します。
必要なツールをインストールします。
sudo apt-get update
sudo apt-get install efitools openssl
バイナリファイルから証明書を抽出します。 sig-list-to-certs コマンドを使用して、バイナリのシグネチャリストを個別の DER 形式の証明書ファイルに分割します。
sig-list-to-certs KEK.bin KEK-cert
更新が成功している場合、複数のファイル (例: KEK-cert-0.der, KEK-cert-1.der) が生成されます。通常、インデックス番号が大きいファイルに新たに追加された証明書が含まれます。
証明書の詳細を検査します。 OpenSSL を使用して、抽出された DER ファイルのテキストコンテンツを表示します。
openssl x509 -inform DER -in KEK-cert-0.der -noout -text
openssl x509 -inform DER -in KEK-cert-1.der -noout -text
証明書情報を検証します。 出力結果に、適用した更新に対応する証明書詳細が含まれていることを確認します。
証明書が存在する場合、VMware インフラストラクチャ側での更新は完了しています。
証明書の更新が必要な場合: 確認の結果、証明書が見つからない、または更新が必要な場合は、以下の記事を参照して手動更新を行ってください。
Manual Update of Secure Boot Variables in Virtual Machines (423919)