1. Проблема
В ежедневном журнале событий System на виртуальных машинах под управлением VMware ESXi (в моем случае версии 7.x) появляются ошибки:
-
Microsoft‑Windows‑TPM‑WMI ID:1803 (дважды в сутки):
A PK-signed Key Exchange Key (KEK) cannot be found for this device. Check with the device manufacturer for proper key provisioning. -
Microsoft‑Windows‑TPM‑WMI ID:1801 (после перезагрузок):
Updated Secure Boot certificates are available on this device but have not yet been applied to the firmware.
2. Причина
Windows автоматически заменяет сертификаты Secure Boot 2011 года (истекают в 2026 г.) на Microsoft 2023 CA. Для записи нового KEK (Microsoft Corporation KEK 2K CA 2023) он должен быть подписан текущим Platform Key (PK) прошивки.
У ВМ, созданных на ESXi до версии 8.0 U3j, в NVRAM записан сертификат PK от VMware с некорректной подписью. Подписанного под него KEK у Microsoft нет, поэтому обновление KEK/DB не применяется и регистрируется ошибка 1803 (подробнее см. Broadcom KB 423919).
Обновление VMware Tools проблему не решает: требуется ручная замена PK в NVRAM ВМ на Windows OEM Devices PK от Microsoft.
3. Решение — ручная замена PK (Broadcom KB 423919)
Примечание: Последующие действия протестированы на ОС Windows Server 2016, 2019 и 2022 (без использования BitLocker).
3.1. Подготовка
-
Сделать снапшот ВМ.
-
Скачать файл
WindowsOEMDevicesPK.derиз официального репозитория Microsoft на GitHub: microsoft/secureboot_objects / PreSignedObjects/PK/Certificate -
Подключить временный виртуальный диск размера 128 МБ, отформатированный в FAT32, и поместить на него файл
WindowsOEMDevicesPK.der.
3.2. Порядок работ на каждой ВМ
Перед началом работ выполните действия из пункта 3.1. Подготовка.
-
Выключить ВМ.
-
Разрешить изменение переменных Secure Boot без аутентификации (добавить параметр VMX):
-
vCenter 7.x: Edit Settings → VM Options → Advanced → Edit Configuration
-
vCenter 8.x / 9.x: Edit Settings → Advanced Parameters
-
Параметр:
uefi.allowAuthBypass = "TRUE"
-
-
Включить вход в настройки прошивки: Edit Settings → VM Options → Boot Options → включить Force EFI Setup.
-
Включить ВМ.
-
В интерфейсе UEFI:
Enter Setup→Secure Boot Configuration→PK Options→Enroll PK→Enroll PK Using File→ выбрать диск 128 МБ (LBA 0x80, Total Block Size 0x3F000) → выбрать файлWindowsOEMDevicesPK.der→Commit changes and exit. -
Выключить ВМ.
(PK записывается в NVRAM (файл
.nvramВМ) сразу после выполнения Commit). -
Обязательно: удалить параметр
uefi.allowAuthBypass = "TRUE"из конфигурации ВМ (пока параметр активен, переменные Secure Boot можно изменять без проверки подписи). Убедиться, что параметр Force EFI Setup выключен. -
Отключить от ВМ временный диск 128 МБ.
-
Включить ВМ.
3.3. Проверка установленного PK
Запустить PowerShell от имени администратора:
$pk = Get-SecureBootUEFI -Name PK$bytes = $pk.Bytes$cert = $bytes[44..($bytes.Length-1)][IO.File]::WriteAllBytes("PK.der", $cert)certutil -dump PK.der
Ожидаемый результат:
Subject: CN=Windows OEM Devices PK, O=Microsoft CorporationIssuer: CN=Microsoft RSA Third Party PCA 2023Срок действия: 21.09.2023 – 18.09.2038Cert Hash(sha1): 3d8660c0cb2d57b189c3d7995572a552f75e48b5
3.4. Применение KEK и сертификатов 2023
После успешной замены PK операционная система Windows автоматически применит обновления KEK/DB. Для принудительного ускорения процесса в PowerShell:
Start-ScheduledTask -TaskPath "\Microsoft\Windows\PI\" -TaskName "Secure-Boot-Update"
После этого перезагрузить ВМ и журнале событий System проверить событие 1808.
Пример корректного события 1808 в журнале System:
This device has updated Secure Boot CA/keys. This device signature information is included here.
UpdateType: Windows UEFI CA 2023 (DB), Option ROM CA 2023 (DB), 3P UEFI CA 2023 (DB), KEK 2023, Boot Manager (2023)
3.5. Итоговая проверка
Выполните проверку через PowerShell:
# 1. Проверка наличия нового KEK в прошивке (ожидается True)[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI -Name KEK).Bytes) -match 'KEK 2K CA 2023'# 2. Состояние обновления (ожидается 0x4000)'0x{0:X}' -f (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot).AvailableUpdates# 3. События TPM-WMI (ожидается наличие события 1808, новые 1803/1801 должны отсутствовать)Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-TPM-WMI'} -MaxEvents 10 | ft TimeCreated, Id, Message -Wrap
После успешной проверки удалите ранее созданный снапшот ВМ.
4. Замечания
-
Снапшоты ВМ: Снапшот создается до подключения временного диска FAT32, поэтому диск в структуру снапшота не входит и не влияет на операции удаления или отката.
-
Версии ESXi: Исправление с валидным PK по умолчанию интегрировано в релизах ESXi 8.0 U3j и новее, а также в серии ESXi 9.x. Для ВМ, созданных на этих версиях, ручная процедура не требуется.
5. Источники
-
Broadcom KB 423919 — Manual Update of the Secure Boot Platform Key in Virtual Machines:
-
Microsoft — Secure Boot troubleshooting guide:
ссылка на оригинал статьи https://habr.com/ru/articles/1093516/