Secure Boot certificates are expiring pt. 2

๐Ÿ”’ Secure Bits ๐Ÿ’ก

๐—จ๐—ฝ๐—ฑ๐—ฎ๐˜๐—ถ๐—ป๐—ด ๐—ฆ๐—ฒ๐—ฐ๐˜‚๐—ฟ๐—ฒ ๐—•๐—ผ๐—ผ๐˜ ๐—ฐ๐—ฒ๐—ฟ๐˜๐—ถ๐—ณ๐—ถ๐—ฐ๐—ฎ๐˜๐—ฒ๐˜€ ๐—ผ๐—ป ๐—ช๐—ถ๐—ป๐—ฑ๐—ผ๐˜„๐˜€ ๐—ฆ๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐—ฟ ๐—ฐ๐—ผ๐—ป๐˜๐—ถ๐—ป๐˜‚๐—ฒ๐˜€ (๐˜ฑ๐˜ต. 2)

I believe I had to go through the worst-case scenario after all:

โœ… GPO trigger โ†’ KEK failure

โœ… Broadcom idea (upgrade compatibility + delete/rename NVRAM) โ†’ VM fails to boot

โœ… Fixed the VM โ†’ tried again โ†’ KEK failure again

โœ… Ended up enrolling the missing KEK manually in UEFI

On the other hand Iโ€™m glad it went this way, because I can show the โ€œugly pathโ€ too. You might be lucky and stop at part 1. But if you run into VMware + KEK trouble, this is what it can look like.

โธป

๐Ÿงฉ ๐—ช๐—ต๐—ฎ๐˜ ๐—ต๐—ฎ๐—ฝ๐—ฝ๐—ฒ๐—ป๐—ฒ๐—ฑ ๐—ป๐—ฒ๐˜…๐˜

After the KEK error from part 1, I found Broadcom guidance and community comments suggesting that on some older VMs you can solve missing 2023 Secure Boot variables by upgrading VM compatibility and regenerating the VMโ€™s NVRAM (.nvram).

My demo environment is ESXi 8.0.2 and the VM was already at the highest compatible hardware version, but I tried removing the NVRAM anyway. Bad idea: the VM stopped booting.

โš ๏ธ Test everything first (donโ€™t delete but rename) and proceed carefully โ€” versions and VM history matter.

โธป

๐Ÿ› ๏ธ ๐—ฅ๐—ฒ๐—ฐ๐—ผ๐˜ƒ๐—ฒ๐—ฟ๐—ถ๐—ป๐—ด ๐˜๐—ต๐—ฒ ๐—ฉ๐—  (๐—ฏ๐—ผ๐—ผ๐˜ ๐—ณ๐—ถ๐˜…)

I didnโ€™t give up. I booted into UEFI and used:

UEFI โ†’ Boot from a file โ†’ (select volume) โ†’ EFI โ†’ Microsoft โ†’ Boot โ†’ SecureBootRecovery.efi

That checked and repaired the UEFI boot configuration and let the VM boot again. Once back in Windows, I was basically in the same situation: Secure Boot was enabled, DB updates looked fine, but the KEK step was still failing.

At that point I accepted the reality: manual time.

โธป

๐Ÿ”ง ๐— ๐—ฎ๐—ป๐˜‚๐—ฎ๐—น ๐—ฒ๐—ป๐—ฟ๐—ผ๐—น๐—น๐—บ๐—ฒ๐—ป๐˜

I followed Broadcomโ€™s manual enrollment approach (link in comments), with one important adjustment: their examples focus on PK, but my problem was KEK.

๐—ฆ๐˜๐—ฒ๐—ฝ๐˜€ (๐—ต๐—ถ๐—ด๐—ต ๐—น๐—ฒ๐˜ƒ๐—ฒ๐—น):

1๏ธโƒฃ Download the required Microsoft certificates (DER files)

2๏ธโƒฃ Attach a small disk to the VM and copy the certs there

3๏ธโƒฃ Power off the VM and add advanced parameter:

uefi.allowAuthBypass = “TRUE”

4๏ธโƒฃ Boot into UEFI โ†’ Secure Boot Configuration becomes available

5๏ธโƒฃ Choose what you need to fix (PK / KEK / DB / DBX) and enroll the correct certificate from the attached disk โ†’ Save/commit

6๏ธโƒฃ Remove uefi.allowAuthBypass afterwards and boot back into Windows

7๏ธโƒฃ Re-run the Secure Boot update task / let Windows finish remaining steps

โธป

๐Ÿ˜…ย ๐—ฅ๐—ฒ๐—ฎ๐—น๐—ถ๐˜๐˜† ๐—ฐ๐—ต๐—ฒ๐—ฐ๐—ธ

Honestly, I spent far more time on this than I expected. Too many overlapping guides and โ€œstatus/errorโ€ breadcrumbs that donโ€™t always lead anywhere, especially in virtualized environments.

If this were always simple, it would really be just: patch โ†’ gpupdate & maybe reboot.

โธป

๐—œ๐—ป ๐—ฝ๐—ฎ๐—ฟ๐˜ ๐Ÿฏย Iโ€™ll focus on how to tell youโ€™re fine, how to detect โ€œstuck in progress,โ€ and how to collect the right event IDs / registry status into something you can report on.

To be continuedโ€ฆ