Secure Boot CA 2023 — kontrola a remediace
Jediný PowerShell skript Invoke-SecureBootRemediation.ps1 pro audit a řízenou remediaci expirujících Secure Boot certifikátů na Windows Serverech (fyzické stroje, Hyper-V VM, VMware VM).
1. Co řešíme
Microsoft v upozornění KB5062710 oznámil, že původní Secure Boot certifikáty z roku 2011 expirují v průběhu roku 2026. Tyto certifikáty jsou uloženy přímo ve firmware (UEFI KEK a DB databázích) a zajišťují důvěryhodnost celého boot procesu.
| Certifikát | Umístění | Expirace | Náhrada 2023 |
|---|---|---|---|
| Microsoft Corporation KEK CA 2011 | KEK | 24. 6. 2026 | Microsoft Corporation KEK 2K CA 2023 |
| Microsoft UEFI CA 2011 | DB | 27. 6. 2026 | Microsoft UEFI CA 2023 + Option ROM UEFI CA 2023 |
| Microsoft Windows Production PCA 2011 | DB | 19. 10. 2026 | Windows UEFI CA 2023 |
Dopad, pokud se nic neudělá: server bude dál bootovat, ale přestane přijímat nové ochrany boot procesu — aktualizace Boot Manageru, revokace (DBX) a mitigace nově objevených boot-level zranitelností. Postupně se sníží ochrana a ovlivní to scénáře závislé na Secure Boot důvěře (BitLocker hardening, third-party bootloadery).
Pozor — co je skutečné „hotovo": nestačí jen mít nové certifikáty v KEK/DB. Aktualizace je dokončená, až když se systém reálně bootuje z Boot Manageru podepsaného Windows UEFI CA 2023 (signalizuje WindowsUEFICA2023Capable = 2 / Event 1808). Tento poslední krok se aplikuje až po restartu. Skript proto kontroluje i Boot Manager, ne jen certifikáty.
2. Jak skript správně použít
Požadavky
- Windows PowerShell 5.1+, spuštěno jako Administrator
- Build Windows z 14. 10. 2025 nebo novější (KB5066835) — bez něj neexistují servicing registry klíče ani úloha. Skript na to upozorní.
- Žádné externí moduly. UEFI databáze čte nativně.
Skript NIKDY nerestartuje server
Restart je nutný k dokončení aktualizace, ale necháváme ho na vás (plánované okno, ohled na BitLocker). Skript jen jasně řekne, kdy je restart potřeba.
Typický průběh (interaktivně)
# 1) Spustit na serveru jako Administrator
.\Invoke-SecureBootRemediation.ps1
Skript provede detekci, ukáže checklist a u stavů, kde to dává smysl, se zeptá, zda remediaci aplikovat. Po souhlasu nastaví registry a spustí servicing úlohu (počká na ni). Pak:
2) Naplánujte RESTART serveru
3) Po restartu spusťte skript znovu
4) Opakujte, dokud checklist nebude celý zelený (HOTOVO)
Aktualizace se aplikuje po částech na více restartů — hodnota AvailableUpdates postupně klesá 0x5944 → 0x5904 → 0x5104 → 0x4104 → 0x4100 → 0x4000 → 0x0. Cílový stav je AvailableUpdates=0x0, UEFICA2023Status=Updated, WindowsUEFICA2023Capable=2.
Důležité před restartem
Pokud má server BitLocker s ochranou vázanou na TPM/PCR7, změna Boot Manageru může vyvolat recovery prompt. Skript BitLocker stav zobrazí a zvýrazní — před restartem ověřte recovery key.
Parametry
| Parametr | Účel |
|---|---|
| (bez parametru) | Interaktivní detekce → dotaz → remediace (bez restartu) |
-CheckOnly |
Jen detekce + checklist + exit kód (0 = hotovo, 1 = nutná akce, 2 = blokováno). Bez změn a bez dotazu. Vhodné pro RMM/monitoring. |
-WhatIf |
Ukáže, co by remediace udělala, bez provedení změn |
-AssumeYes |
Neinteraktivně aplikuje remediaci (pokud je smysluplná). Stále bez restartu. |
-Force |
Aplikuje i ve stavech, kdy to skript jinak nedoporučuje |
-SkipScheduledTask |
Nastaví registry, ale nespustí úlohu (spustí se sama, cca á 12 h) |
-SkipBootManagerFileCheck |
Vynechá mount ESP + certutil. Dokončení se i tak pozná z WindowsUEFICA2023Capable=2 / Event 1808 / 1799. |
-RegisterResume |
Po remediaci vyžadující restart nastaví RunOnce, který po PŘÍŠTÍM (ručním) restartu sám spustí -CheckOnly. Nikdy nerestartuje. |
-Detailed |
Rozšířený rozpis (certifikáty, události, Boot Manager chain, bit-rozklad AvailableUpdates) |
-PassThru |
Vrátí výsledný objekt do pipeline |
-LogPath <cesta> |
Vlastní cesta k logu (jinak log vzniká vedle skriptu jen při reálné remediaci) |
Příklady
# Jen kontrola stavu (pro skript/monitoring), bez zásahu
.\Invoke-SecureBootRemediation.ps1 -CheckOnly
# Náhled co by se stalo, bez změn
.\Invoke-SecureBootRemediation.ps1 -WhatIf
# Neinteraktivní aplikace + auto-kontrola po příštím restartu
.\Invoke-SecureBootRemediation.ps1 -AssumeYes -RegisterResume
# Plný rozpis pro diagnostiku
.\Invoke-SecureBootRemediation.ps1 -CheckOnly -Detailed
3. Co skript dělá (detailně)
Fázový checklist
Server je „HOTOVO" teprve když projdou všechny povinné fáze. Volitelné fáze jsou jen informativní.
| Fáze | Povinná | Splněno když |
|---|---|---|
| Secure Boot zapnutý | ✅ | Confirm-SecureBootUEFI = True |
| Servicing task k dispozici | ✅ | existuje \Microsoft\Windows\PI\Secure-Boot-Update |
| KEK: Microsoft Corporation KEK 2K CA 2023 | ✅ | cert v KEK databázi |
| DB: Windows UEFI CA 2023 | ✅ | cert v DB databázi |
| Boot Manager aktivní (2023) | ✅ | WindowsUEFICA2023Capable=2 / Event 1808 / 1799 |
| DB: Microsoft UEFI CA 2023 (3rd-party) | — | volitelné (pro option ROM / non-Windows boot) |
| DB: Option ROM UEFI CA 2023 | — | volitelné |
| DBX: revokace starého boot manageru 2011 | — | volitelné (finální hardening) |
V checklistu: [✓] splněno (zeleně), [ ] zbývá, [✗] chyba/blokováno. Zvýrazní se aktuální krok („← vyžaduje RESTART").
Detekce — odkud čte
- Prostředí a HW (WMI/CIM): fyzický / Hyper-V VM / VMware VM, výrobce, model, BIOS verze a datum
- Secure Boot stav a operating mode (User / Deployed / Setup / Audit) ze standardních UEFI proměnných
- Certifikáty v KEK / DB / DBX — primárně parsováním
EFI_SIGNATURE_LISTna X.509 (subject, thumbprint, platnost), s ASCII fallbackem - Boot Manager
bootmgfw.efina ESP — read-only mount +certutil -dump(staged podpis); aktivní stav z registru/eventů - Registry
HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot[\Servicing]:AvailableUpdates,MicrosoftUpdateManagedOptIn,HighConfidenceOptOut,UEFICA2023Status(REG_SZ: NotStarted/InProgress/Updated),UEFICA2023Error,UEFICA2023ErrorEvent,WindowsUEFICA2023Capable(0/1/2),ConfidenceLevel - BitLocker systémové jednotky: stav ochrany a typ protektoru (zvýraznění TPM/PCR7 rizika)
- Event Log (System, zdroj TPM-WMI): 1795, 1796, 1799, 1800, 1801, 1802, 1803, 1808
Vyhodnocení — kategorie
| Kategorie | Význam | Akce |
|---|---|---|
| OK | kompletní 2023 sada, aktivní Boot Manager, 2011 odstraněny | žádná |
| OK_TRANSITION | 2023 i aktivní Boot Manager hotové, 2011 ještě přítomné (normální) | žádná, monitorovat |
| UPDATE_NEEDED | nic 2023 nenasazeno | zahájit remediaci |
| UPDATE_PARTIAL | část nasazena, chybí KEK/DB | pokračovat v cyklu |
| UPDATE_PENDING | KEK i DB hotové, zbývá aktivovat Boot Manager | RESTART, pak znovu zkontrolovat |
| UPDATE_FAILED | Event 1795 / UEFICA2023ErrorEvent / status Failed |
firmware/OEM, troubleshooting |
| FIRMWARE_UPDATE_NEEDED | ConfidenceLevel „Temporarily Paused" / Event 1802 | update firmwaru u OEM |
| NOT_SUPPORTED | ConfidenceLevel „Not Supported" | dokumentovat jako výjimku |
| SETUP_MODE | Secure Boot v Setup Mode (chybí enrolled PK) | obnovit klíče v UEFI |
| TASK_MISSING | chybí servicing úloha (starý build) | nainstalovat KB5066835+ |
| SECUREBOOT_DISABLED | Secure Boot vypnutý | rozhodnout o zapnutí |
| NO_SECUREBOOT / _VM | Legacy BIOS / VM bez vTPM | výjimka |
Remediace (jen po souhlasu, sekvenčně)
- Registry — nastaví
MicrosoftUpdateManagedOptIn=1,AvailableUpdates=0x5944,HighConfidenceOptOut=0; zápis se ověří zpětným čtením, než pokračuje dál. - Servicing úloha — spustí
\Microsoft\Windows\PI\Secure-Boot-Updatea čeká na změnuAvailableUpdates(nebo na doběh úlohy, timeout 180 s). - Ověření — znovu proběhne detekce a ukáže aktualizovaný stav fází.
Skript pak vypíše další kroky (restart, BitLocker, opakování) — bez restartu.
Stav napříč restarty
Průběh se ukládá do %ProgramData%\SecureBootCA2023\state.json (číslo cyklu, kategorie, hodnota). S -RegisterResume se přes RunOnce po dalším restartu sama spustí -CheckOnly (žádné auto-aplikování, žádný auto-restart).
Výstup
- Stručný barevný souhrn: server, checklist, registry/firmware, verdikt
- Český, faktický, nezahlcuje; důležité informace jsou zvýrazněné
- Volitelný log (cesta se vypíše),
-Detailedrozpis,-PassThruobjekt -CheckOnlynastavuje exit kód (0/1/2) pro automatizaci
Kódování
Skript je uložen jako UTF-8 s BOM a na startu vynutí UTF-8 výstup konzole, aby čeština i symboly (✓) fungovaly i ve Windows PowerShell 5.1. Symboly checklistu jsou na jednom místě nahoře ve skriptu ($SYM_DONE …), kdyby je bylo potřeba změnit.
4. Zdroje
Microsoft — oficiální dokumentace
| Téma | Odkaz |
|---|---|
| Přehled: expirace certifikátů a CA aktualizace (KB5062710) | support.microsoft.com |
| Guidance for IT Professionals and Organizations | support.microsoft.com |
| Registry key updates for Secure Boot (IT-managed) | support.microsoft.com |
| Secure Boot DB and DBX variable update events | support.microsoft.com |
| IT Pro guidance (KB5062713) | support.microsoft.com |
| Registry key metoda (KB5068202) | support.microsoft.com |
| GPO metoda (KB5068198) | support.microsoft.com |
| WinCS API (KB5068197) | support.microsoft.com |
| Troubleshooting (KB5085046) | support.microsoft.com |
| Known issues a resolutions, vč. Hyper-V fix (KB5085790) | support.microsoft.com |
| Minimální build 14. 10. 2025 (KB5066835) | support.microsoft.com |
| Windows Server Secure Boot playbook (2026) | techcommunity.microsoft.com |
Komunitní projekty (inspirace pro logiku a přehled)
| Projekt | Odkaz |
|---|---|
| CheckCA2023 (claude-boucher) — GUI monitor, podrobná registry/bit reference | github.com/claude-boucher/CheckCA2023 |
| SecureBoot-CA2023-Automatic-Update (mathisokle) — automatizace přes restarty | github.com/mathisokle/SecureBoot-CA2023-Automatic-Update |
Skript záměrně NErestartuje server. Implementuje metodu registry klíčů (KB5068202); metody GPO / Intune / WinCS nepokrývá.