Secure boot cert rotation
Skill air-gapped/skills/.claude/skills/secure-boot-cert-rotation
Triage and remediate the Microsoft Secure Boot 2011→2023 UEFI certificate rotation (CAs expiring June/October 2026) across Dell PowerEdge / iDRAC9 bare metal, Ubuntu/Linux servers, and Harvester HCI / KubeVirt guest VMs. Establishes the load-bearing fact that UEFI firmware ignores certificate expiry — nothing stops booting on the deadline; the real risk is forward-compat once a 2023-only-signed shim arrives, plus a dbx/revocation freeze — then routes to the cleanest per-platform fix: iDRAC BIOS-staged keys applied on reboot (Dell), fwupd-free manual `db` append that self-authenticates via the existing 2011 KEK (Linux), and the Harvester virt-launcher OVMF floor (v1.6.0) with ephemeral-vs-persistent NVRAM triage (VMs). Covers the PK→KEK→db trust chain, why no generic Microsoft 2023 KEK payload exists, and audit via mokutil / efi-readvar / racadm bioscert / Redfish.From its SKILL.md
npx -y skills add air-gapped/skills --skill secure-boot-cert-rotationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.9 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it
secure-boot-cert-rotation
Triage and fix the Microsoft Secure Boot 2011→2023 certificate rotation on a real, mixed fleet.
Microsoft's original 2011 Secure Boot CAs expire in 2026; their 2023 replacements take over. This skill
exists to stop the two failure modes operators actually hit: (1) panic — believing servers will stop
booting on the expiry date (they won't), and (2) applying the wrong tool — reaching for fwupd/LVFS on
hardware and VMs it cannot serve, instead of the firmware-native path.
The work is almost never the cert write itself — it's knowing which of three firmware surfaces a given
machine has (Dell host firmware, generic Linux host firmware, or a VM's virtual OVMF varstore), because each
is updated by a different mechanism and fwupd only covers one of them.
The one load-bearing fact — read this before anything else
UEFI firmware does not check a certificate's expiry date when validating Secure Boot signatures. EDK2 sets
NO_CHECK_TIME on PKCS#7 verification on purpose (there is no trustworthy clock at boot; enforcing notAfter
would be a self-inflicted brick vector). Canonical, Red Hat, fwupd, and LWN all state this independently.
Consequences, and the entire reason this is a hygiene task and not a fire:
- Every machine that boots today keeps booting after the expiry dates. Nothing breaks on the deadline.
- The real risks are forward-looking:
- Forward-compat — once a distro ships a shim/bootloader signed only by the Microsoft UEFI CA 2023,
a machine whose firmware
dblacks that 2023 cert can't validate the new binary. On Linux this surfaces as "package-management failures / can't install updates"; on new installs/PXE as a failed deploy. - Revocation freeze — a machine stuck on the expired 2011 KEK can't receive new
dbxrevocations, so known-vulnerable bootloaders stay trusted. (Lower on Linux, which revokes via SBAT, notdbx.)
- Forward-compat — once a distro ships a shim/bootloader signed only by the Microsoft UEFI CA 2023,
a machine whose firmware
- So the fix everywhere is: get the Microsoft 2023
dbcert into the firmware/varstore (and the 2023 KEK where the platform offers a path). Mechanism + dates + the 2011→2023 map:references/mechanism.md.
Routing — pick the surface, then the reference
A machine has exactly one of three firmware surfaces. Identify it first; everything else follows.
| Surface | Who has it | Cleanest fix | Reference |
|---|---|---|---|
| Dell PowerEdge host firmware | Any Dell bare-metal node (incl. Linux servers and Harvester hosts on Dell) | Recent BIOS already carries 2023 keys, staged → applied on a controlled reboot (Lifecycle Controller pass). Audit + reboot; ResetAllKeysToDefault via Redfish on a new-enough BIOS; Ansible for the fleet. | references/dell-poweredge.md |
| Generic Linux host firmware | Non-Dell bare metal, or OS-side enrollment on any host | Manual db append of Microsoft's signed 2023 payload — no fwupd, no Setup Mode (it self-auths via the 2011 KEK). | references/linux-bare-metal.md |
| VM virtual OVMF varstore | Harvester / KubeVirt (and any QEMU/OVMF) guest VMs | iDRAC does not touch this. Governed by the Harvester version → virt-launcher → OVMF (floor v1.6.0); then ephemeral-vs-persistent-NVRAM triage. | references/harvester-vms.md |
fwupd/LVFS is the desktop/laptop path. It is the wrong tool for Dell PowerEdge (firmware ships via
iDRAC/DSU, not LVFS), for VMs (no capsule path), and on stock Ubuntu it is also simply too old (22.04 ships
1.7.9, 24.04 ships 1.9.34; the uefi-db/uefi-kek cert plugins need fwupd ≥ 2.0.8). If fwupdmgr "does
nothing" on a server, that is expected — use the firmware-native path. Details in each platform reference.
Workflow
1. Audit before you touch anything (read-only)
Always start by reading what's actually enrolled — the fix and its urgency depend on it. Verdict: NEEDS
UPDATE if db has the 2011 Microsoft UEFI CA but not Microsoft UEFI CA 2023; GOOD if the 2023 certs are
present.
# Linux host or in-guest:
sudo mokutil --sb-state # Secure Boot on?
sudo mokutil --kek | grep -i "KEK 2K CA 2023" # 2023 KEK present?
sudo mokutil --db | grep -iE "Microsoft UEFI CA 2023|Windows UEFI CA 2023"
sudo efi-readvar -v db | grep -i 2023 # efitools alternative
Dell out-of-band: racadm ... bioscert view --all or Redfish GET /redfish/v1/Systems/System.Embedded.1/SecureBoot/SecureBootDatabases.
Harvester VMs: first find which VMs even use Secure Boot (kubectl ... efi.secureBoot) — many don't, and
those are moot. Exact commands per reference.
2. Establish the surface and route (table above), then apply that reference's runbook
Each reference is self-contained: audit → cleanest fix → fallback → verify.
3. Verify after, on a sample, before fleet rollout
Re-run the §1 audit. Test one host per model+firmware (or one VM per template) before the fleet — failure
modes cluster by firmware version (HP/Fujitsu block standalone db updates; old BIOSes exhaust NVRAM). Cross-
cutting gotchas, ordering, and the do-nothing risk timeline: references/gotchas-and-decisions.md.
House rules (the hard-won ones — encode these into every answer)
- Don't fearmonger. Lead with "nothing stops booting on the deadline." Expiry ≠ revocation; firmware
ignores
notAfter. The honest framing is forward-compat + revocation-freeze on a slow fuse, not a brick event. Getting this wrong sends operators into needless emergency reinstalls. db-first works without the 2023 KEK. The Microsoft 2023dbpayloads are signed by the old 2011 KEK that every machine already has, so they self-authenticate and append withefi-updatevar -a/sbkeysync— no fwupd, no Setup Mode. There is no generic Microsoft-signed 2023 KEK payload (KEK updates are per-OEM, PK-signed); the 2023 KEK arrives via OEM BIOS (Dell), Windows servicing, fwupd's per-hardware LVFS KEK, orvirt-fw-varsfor VMs. Prioritize the db cert — it is what boots future 2023-signed bootloaders.- Reinstalling the OS does NOT fix firmware.
db/KEKlive in firmware NVRAM (or a VM's varstore), independent of the OS. A 26.04 reinstall only ships a 2023-aware shim/grub — the cert still needs enrolling. Decouple "patch in place vs reinstall" from "fix the certs".references/linux-bare-metal.md§ Reinstall. - Verify version claims against the REAL artifact, never upstream commit dates. "Does package/image X carry
the 2023 certs?" is answered by reading the published artifact — distro changelog/advisory, or the bytes of
the actual varstore/ISO/RPM — because distros backport certs onto old bases (Red Hat and SUSE both did).
Inferring from an upstream edk2 tag date gives a confidently-wrong answer. (This is exactly how the Harvester
floor was pinned to v1.6.0 by
openssl-parsing the varstore in each release'svirt-launcher, not by the Oct-2025 upstream commit.)references/harvester-vms.mdshows the proof method. - Ground volatile numbers; don't assert from memory. Dell per-generation BIOS minimums, Ubuntu fwupd
pocket versions, and Harvester release dates change. State a specific version only if it's machine-reported,
freshly grounded (Dell KB / Launchpad /
gh release), or marked UNVERIFIED. The methodology (mechanism, trust chain, surfaces) is what this skill asserts; the leaf numbers are grounded per use. - Right tool per surface. Don't recommend
fwupdfor Dell PowerEdge or VMs, and don't recommendrpm -qon a Harvester node to check guest OVMF (it isn't there — guest OVMF ships in thevirt-launchercontainer). Match the mechanism to the firmware surface (routing table). - Audit → sample → fleet. Read what's enrolled before acting; pilot one host/VM per model+firmware before rolling out. Transient unbootability is the real (recoverable) risk, not hardware damage.
References
references/mechanism.md— what expires + exact dates, the 2011→2023 cert map (KEK vs db), why firmware ignores expiry, the PK→KEK→db trust chain, the no-generic-2023-KEK fact, SBAT-vs-dbx on Linux.references/dell-poweredge.md— iDRAC9 path: per-generation BIOS minimums, staged-until-reboot mechanism,ResetAllKeysToDefaultvia Redfish/racadm,bioscertaudit, thedellemc.openmanageAnsible module.references/linux-bare-metal.md— audit commands, the fwupd-free manualdbappend (Microsoft signed-payload filenames + URLs), firmware-menu (Key Management) enrollment from rawPreSignedObjects/*.der+ the ESP staging trick (/boot/efi, no USB/virtual-media), the fwupd-snap fallback + Ubuntu pocket reality, the patch-vs-reinstall decision.references/harvester-vms.md— the two layers (Dell host vs guest OVMF), guest OVMF ships invirt-launcher(floor v1.6.0, per-line table, the artifact-proof method), host Secure Boot + bug #7343, the ephemeral-vs-persistent NVRAM triage with exactkubectlcommands,virt-fw-varsinjection.references/gotchas-and-decisions.md— order of operations (PK→KEK→db), HP/Fujitsu standalone-db block, NVRAM exhaustion, BitLocker/PCR7 reseal, the do-nothing risk timeline, the disable-Secure-Boot tradeoff.references/sources.md— primary sources (Microsoft, Dell, Red Hat, Canonical, fwupd/LVFS, SUSE/Harvester, KubeVirt) with one-line credibility notes.
What ships with it: 7 files
36.4 KB alongside SKILL.md
references/
- dell-poweredge.md4.7 KB
- gotchas-and-decisions.md4.2 KB
- harvester-vms.md7.2 KB
- improvement-backlog.md2.0 KB
- linux-bare-metal.md7.3 KB
- mechanism.md5.2 KB
- sources.md5.9 KB