- Invoke-SecureBootAudit.ps1: audit Secure Boot certifikátů (Fáze 1) - detekce prostředí (Physical/Hyper-V VM/VMware VM) - parsování EFI_SIGNATURE_LIST, detekce 2011/2023 certifikátů - registry stav, Event Log analýza, kategorizace, JSON výstup - Set-SecureBootCertificateUpdate.ps1: remediace dle KB5068202 - AvailableUpdates = 0x5944 - scheduled task s wait smyčkou (timeout 120s) - WhatIf, Force, VerifyOnly, WinRM - README.md: popis problému, detekce stavů, remediační postup
14 KiB
Secure Boot Certificate Remediation
Sada PowerShell skriptů pro audit a remediari expirujících Secure Boot certifikátů na Windows Serverech (fyzické servery, Hyper-V VM, VMware VM).
1. Co řešíme
Problém
Microsoft oznámil prostřednictvím KB5062710, ž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 serveru (UEFI KEK a DB databázích) a zajišťují důvěryhodnost celého boot procesu.
Expirující certifikáty a termíny
| Certifikát | Umístění | Expirace | Náhrada |
|---|---|---|---|
| Microsoft Corporation KEK CA 2011 | KEK | 24. června 2026 | Microsoft Corporation KEK 2K CA 2023 |
| Microsoft UEFI CA 2011 | DB | 27. června 2026 | Microsoft UEFI CA 2023 + Microsoft Option ROM UEFI CA 2023 |
| Microsoft Windows Production PCA 2011 | DB | 19. října 2026 | Windows UEFI CA 2023 |
Urgentní: První dvě expirace jsou 24. a 27. června 2026 — audit je nutné provést okamžitě.
Dopad pokud se nic neudělá
Servery bez nových certifikátů budou nadále normálně bootovat — certifikáty sice expirují, ale UEFI firmware je při bootu nevyhodnocuje jako neplatné. Problém nastane postupně:
- Server přestane být schopen přijímat nové aktualizace Secure Boot databází a revokačních seznamů (DBX)
- Nelze aplikovat mitigace nově objevených boot-level zranitelností
- Mohou být ovlivněny scénáře závislé na Secure Boot důvěře: BitLocker hardening, third-party bootloadery, attestation
- Při případném resetu UEFI na factory defaults nebo reinstalaci firmware může boot selhat
Které servery jsou ohroženy
Ohroženy jsou servery, které splňují všechny následující podmínky:
- Mají UEFI firmware (ne Legacy BIOS)
- Mají zapnutý Secure Boot
- Ještě neobdržely nové 2023 certifikáty (typicky přes Windows Update nebo manuální rollout)
Servery s Legacy BIOS nebo vypnutým Secure Boot nejsou přímo ohroženy, ale je vhodné je zdokumentovat.
2. Detekce — jak zjistit aktuální stav
Skripty
| Skript | Účel |
|---|---|
Invoke-SecureBootAudit.ps1 |
Audit jednoho serveru — vrací JSON + human-readable souhrn |
Start-SecureBootFleetAudit.ps1 |
Hromadný audit celé sítě — vstup CSV, výstup agregovaný CSV/JSON |
Spuštění auditu
Lokálně na serveru (spustit jako Administrator):
.\Invoke-SecureBootAudit.ps1
Vzdáleně z workstation:
Invoke-Command -ComputerName SERVER01 -FilePath .\Invoke-SecureBootAudit.ps1 -ArgumentList $null, $false, $true
Hromadně ze seznamu serverů (CSV soubor se sloupcem ServerName):
.\Start-SecureBootFleetAudit.ps1 -ServerListPath .\servers.csv -OutputPath .\audit_results\
Hromadně přímo ze seznamu:
.\Start-SecureBootFleetAudit.ps1 -ServerName SERVER01,SERVER02,SERVER03
Výsledné kategorie
Každý server je zařazen do jedné z těchto kategorií:
| Kategorie | Popis | Doporučená akce |
|---|---|---|
| ✅ OK | Má nové 2023 certifikáty, Secure Boot aktivní | Žádná akce |
| ✅ OK_TRANSITION | Má 2023 i stará 2011 certifikáty (přechodný stav) | Žádná akce, monitorovat |
| ⚠️ UPDATE_NEEDED | Má pouze 2011 certifikáty, Secure Boot aktivní | Naplánovat rollout |
| ⏳ UPDATE_PENDING | Registry nastaveny, čeká na restart | Restartovat server |
| 🔧 FIRMWARE_UPDATE_NEEDED | WindowsUEFICA2023Capable=0 — firmware nepodporuje nové certifikáty |
Update firmware u OEM |
| ⏸️ SECUREBOOT_DISABLED | Secure Boot existuje v UEFI, ale není zapnuté | Rozhodnutí o enablementu |
| ❌ NO_SECUREBOOT | Legacy BIOS — Secure Boot vůbec neexistuje | Dokumentovat jako výjimku |
| ❌ NO_SECUREBOOT_VM | VM bez Secure Boot (Gen1 / bez vTPM / BIOS mode) | Dokumentovat jako výjimku |
| 🔴 UPDATE_FAILED | Selhání aktualizace (viz EventID níže) | Troubleshooting |
Registry hodnoty a jejich výklad
Klíč HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing:
| Hodnota | Typ | Výklad |
|---|---|---|
UEFICA2023Status = 0 |
NotStarted | Aktualizace ještě nebyla spuštěna |
UEFICA2023Status = 1 |
InProgress | Aktualizace probíhá |
UEFICA2023Status = 2 |
Success | Aktualizace proběhla, čeká se na restart |
UEFICA2023Status = 3 |
Failed | Aktualizace selhala — viz UEFICA2023Error |
WindowsUEFICA2023Capable = 0 |
— | Firmware nepodporuje nové certifikáty (potřeba update OEM firmware) |
UEFICA2023Error |
HRESULT kód | Chybový kód při selhání |
Klíč HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot:
| Hodnota | Výklad |
|---|---|
AvailableUpdates |
Bitmaska dostupných aktualizací; 0x5944 = plná sada (nastavíme při remediaci) |
HighConfidenceOptOut = 1 |
Server se odhlásil z high-confidence update path — zablokuje aktualizaci |
EventID v System logu
| EventID | Zdroj | Typ | Výklad |
|---|---|---|---|
| 1808 | Microsoft-Windows-Eventlog | Information | ✅ Certifikáty úspěšně aplikovány — aktualizace proběhla v pořádku |
| 1801 | Microsoft-Windows-Eventlog | Error | ❌ Certifikáty NEBYLY aplikovány — selhání high-confidence update |
| 1795 | Microsoft-Windows-Eventlog | Error | ❌ Selhání aktualizace na Hyper-V VM (viz níže) |
| 1796 | Microsoft-Windows-Eventlog | Information | Průběhová informace |
| 1800 | Microsoft-Windows-Eventlog | Information | Průběhová informace |
| 1802 | Microsoft-Windows-Eventlog | Information | Aktualizace čeká na restart |
| 1803 | Microsoft-Windows-Eventlog | Information | Aktualizace probíhá |
Rychlé ověření z PowerShell:
Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = @(1795,1801,1808) } -MaxEvents 10 |
Select-Object TimeCreated, Id, Message | Format-List
Specifika prostředí
Hyper-V VM
- Virtuální stroje Generation 1 (BIOS mode) nemají Secure Boot — kategorie
NO_SECUREBOOT_VM, není co řešit. - Virtuální stroje Generation 2 mají virtualizovaný UEFI s Secure Boot, ale aktualizace certifikátů závisí na verzi hypervizoru.
- Známý problém (Event 1795): Na starších hostitelích selhávala aktualizace certifikátů ve VM s EventID 1795. Microsoft vydal opravu v březnu 2026 (KB5085790). Postup:
- Ověřit verzi Windows Server na Hyper-V hostiteli
- Aplikovat příslušné kumulativní aktualizace na hostitele
- Spustit audit znovu na VM
VMware ESXi
- Secure Boot ve VMware VM závisí na konfiguraci VM hardware (EFI firmware + Secure Boot zaškrtnuto v nastavení VM).
- VMware nepředává nové certifikáty automaticky — aktualizace musí proběhnout přes Windows stejně jako na fyzickém stroji.
- Kategorie
NO_SECUREBOOT_VMu VMware VM = VM nemá Secure Boot vůbec povoleno.
Fyzické servery s Legacy BIOS
- Kategorie
NO_SECUREBOOT— Secure Boot není podporováno. Firmware je třeba překonfigurovat (boot mode UEFI) nebo server dokumentovat jako výjimku.
Starší firmware
- Servery s firmwarem z doby před cca 2018 mohou vyžadovat update firmware od výrobce (Dell, HP, Lenovo, Supermicro) před tím, než lze nové certifikáty aplikovat.
- Poznávacím znamením je
WindowsUEFICA2023Capable = 0nebo hodnotaUEFICA2023Error. - Servery end-of-life bez dostupného firmware update je nutné dokumentovat jako trvalou výjimku.
3. Remediace — odstranění problému
Skript
Set-SecureBootCertificateUpdate.ps1
Metoda: Registry key dle KB5068202 — nastaví AvailableUpdates = 0x5944, čímž Windows signalizuje, že má aplikovat kompletní sadu nových certifikátů (KEK + UEFI CA + Windows UEFI CA + Boot Manager).
Doporučený postup rollout (staging)
Fáze 1 — Pilotní test (1–2 servery každého typu)
# Nejdřív WhatIf — ověřit co se stane bez provedení změn
.\Set-SecureBootCertificateUpdate.ps1 -ServerName PILOT-SERVER01 -WhatIf
# Aplikovat na pilotní server
.\Set-SecureBootCertificateUpdate.ps1 -ServerName PILOT-SERVER01
# Restartovat pilotní server
Restart-Computer -ComputerName PILOT-SERVER01 -Force
Fáze 2 — Ověření pilotu (po restartu)
# Zkontrolovat EventID 1808 (úspěch) nebo 1801 (chyba)
Invoke-Command -ComputerName PILOT-SERVER01 -ScriptBlock {
Get-WinEvent -FilterHashtable @{ LogName='System'; Id=@(1801,1808) } -MaxEvents 5 |
Select-Object TimeCreated, Id, LevelDisplayName, Message | Format-List
}
# Spustit plný audit pro ověření kategorie OK
Invoke-Command -ComputerName PILOT-SERVER01 -FilePath .\Invoke-SecureBootAudit.ps1 -ArgumentList $null, $false, $true
Fáze 3 — Rozšíření na další servery
# Hromadně ze CSV (sloupec ServerName)
.\Set-SecureBootCertificateUpdate.ps1 -ServerName (Import-Csv .\servery-wave1.csv).ServerName
# Po restartech ověřit hromadně
.\Start-SecureBootFleetAudit.ps1 -ServerListPath .\servery-wave1.csv -OutputPath .\audit_post\
Co se děje po spuštění skriptu
- Skript nastaví
AvailableUpdates = 0x5944v registry a resetujeHighConfidenceOptOut = 0 - Spustí scheduled task
\Microsoft\Windows\PI\Secure-Boot-Update(pokud existuje; jinak se task spustí sám do 12 hodin) - Task zpracuje registry a připraví certifikáty — status přejde z
NotStarted→InProgress→Success - Certifikáty se aplikují až při příštím restartu — Boot Manager zapíše nové certifikáty do UEFI firmware
- Po restartu se v System logu objeví EventID 1808 (úspěch) nebo 1801 (chyba)
Dopad na server
| Aspekt | Detail |
|---|---|
| Dostupnost | Žádný výpadek při nastavení registry. Restart je standardní plánovaný restart. |
| Riziko selhání bootu | Minimální — neúspěšná aktualizace certifikátů neohrozí boot. Server nastartuje i se starými certifikáty. |
| Počet restartů | Obvykle 1 restart. Ve výjimečných případech může být vyžadován druhý. |
| Čas po restartu | Certifikáty jsou aplikovány v rané fázi bootu — uživatelé to nepocítí. |
| BitLocker | Pokud je BitLocker aktivní s PCR7 (Secure Boot measurement), ověřit recovery key před restartem. |
| Monitoring | Po restartu čekat min. 48 hodin než prohlásíme server za stabilní. |
Doporučení pro BitLocker: Před restartem na serverech s BitLockerem ověřit dostupnost recovery key:
manage-bde -protectors -get C:
Ověření úspěchu
1. Event log — primární ověření:
Get-WinEvent -FilterHashtable @{ LogName='System'; Id=1808 } -MaxEvents 3 |
Select-Object TimeCreated, Message
EventID 1808 potvrzuje úspěšnou aplikaci certifikátů.
2. Audit skript — kompletní ověření:
.\Invoke-SecureBootAudit.ps1
# Očekávaný výstup: kategorie "✅ OK" nebo "✅ OK_TRANSITION"
3. Ruční kontrola přítomnosti certifikátů:
# KEK databáze — hledat 2023 certifikáty
$kek = Get-SecureBootUEFI KEK
# DB databáze
$db = Get-SecureBootUEFI db
4. Registry stav:
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing' |
Select-Object UEFICA2023Status, UEFICA2023Error, WindowsUEFICA2023Capable
# UEFICA2023Status = 2 znamená Success
Troubleshooting časté chyby
Event 1801 — high-confidence update selhal:
# Zkontrolovat UEFICA2023Error
(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing').UEFICA2023Error
# Zkusit znovu s -Force
.\Set-SecureBootCertificateUpdate.ps1 -ServerName <server> -Force
Event 1795 — Hyper-V VM selhání:
- Zkontrolovat verzi Windows Server hostitele a aplikovat kumulativní update (KB5085790)
- Po aktualizaci hostitele spustit remediaci na VM znovu
WindowsUEFICA2023Capable = 0 — firmware nepodporuje:
- Zkontrolovat dostupnost firmware update u výrobce serveru
- Dell: Dell Update Package / iDRAC
- HP: HP Service Pack for ProLiant (SPP)
- Lenovo: Lenovo XClarity
- Supermicro: BIOS update přes IPMI
- Pokud firmware update není dostupný → dokumentovat jako trvalou výjimku
HighConfidenceOptOut = 1 — server se odhlásil:
# Resetovat OptOut
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot' `
-Name HighConfidenceOptOut -Value 0 -Type DWord
# Pak spustit remediaci znovu
Reference
| KB | Popis |
|---|---|
| KB5062710 | Přehled: expirace certifikátů a CA aktualizace |
| KB5062713 | IT Pro guidance |
| KB5068202 | Metoda registry klíčů (použita v tomto projektu) |
| KB5068198 | Metoda Group Policy |
| KB5068197 | Metoda WinCS CLI |
| KB5085046 | Troubleshooting guide |
| KB5085790 | Known issues a resolutions (vč. Hyper-V fix) |