Introduction: The Ticking Time Bomb Nobody Talked About
If you think Secure Boot certificate expiration is someone else’s problem, you haven’t hit this wall yet.
September 11, 2025. Microsoft’s Secure Boot intermediate signing certificate expired. Reddit and Hacker News lit up. People found their Linux machines—especially pure Linux environments that never touched Windows—either refusing to boot or throwing cryptic signature errors during updates.
My personal story? Last October, a three-year-old Ubuntu 22.04 production server died after a routine apt upgrade. Reboot hit a Secure Boot violation. Black screen. Cold sweat.
The root cause is shim. That thin layer between UEFI and GRUB, signed by Microsoft’s certificate. Shim has a built-in certificate store used to verify subsequent bootloaders and kernels. The problem? That built-in certificate expired.
Who’s Actually Affected?
Not everyone gets hit. Here’s a quick triage table:
| Scenario | Risk Level | Typical Symptoms |
|---|---|---|
| Ubuntu 22.04 or older, shim not updated | Very High | Black screen on boot, Verification failed: (0x1A) Security Violation |
| Ubuntu 24.04+, shim updated to 15.8+ | Low | No visible symptoms |
| Fedora 38 or older | High | Same boot failure |
| Fedora 39+, shim-x64 updated | Low | Normal operation |
| Pure Linux, Secure Boot disabled | None | Everything works |
| Dual boot (Windows + Linux) | Medium | Depends on distro’s shim version |
| Azure Linux VM with Secure Boot enabled | Medium-High | VM fails to boot, especially after rolling back old images |
The One-Liner Explanation
Microsoft’s Secure Boot CA root certificate doesn’t fully expire until June 2026. But the intermediate signing certificate—the one used to sign shim—expired on September 11, 2025.
If your shim is old enough, its built-in certificate store only trusts that now-expired intermediate cert. Any kernel or GRUB compiled after September 11, 2025, with a new signature, gets rejected by Secure Boot.
Diagnosis: Is Your System Compromised?
Step 1: Check Secure Boot Status
mokutil --sb-state
If it returns SecureBoot enabled, keep reading. If disabled, you’re safe for now—but don’t leave it that way long-term.
Step 2: Check Shim Version
# Ubuntu/Debian
dpkg -l | grep shim
# Fedora/RHEL
rpm -qa | grep shim
Critical version numbers:
- shim 15.7 and earlier: Almost certainly affected, built-in certificate expired
- shim 15.8+: New certificate, safe
- shim 15.6: Some distros backported fixes, check individually
Step 3: Check Kernel Signature Status
# Current kernel
uname -r
# Verify kernel signature
sbverify --list /boot/vmlinuz-$(uname -r)
If you see Signature verification failed or the certificate date is before September 11, 2025, your kernel signature is expired.
Recovery: Step-by-Step to Get You Back Online
Option A: Temporarily Disable Secure Boot (Fastest, Least Recommended)
Enter BIOS → Disable Secure Boot → Reboot → Update system → Re-enable.
Risk: With Secure Boot off, you have zero protection against bootkits. Don’t do this in production.
Option B: Update Shim Package (Standard Fix)
# Ubuntu
sudo apt update
sudo apt install --reinstall shim-signed
# Fedora
sudo dnf reinstall shim-x64
# Reboot immediately
sudo reboot
After reboot, verify:
mokutil --list-enrolled
You should see the new certificate fingerprint starting with 77:fe:5e:....
Option C: Manually Enroll New MOK (Machine Owner Key)
If your system won’t boot at all, use a live USB.
# Mount root partition
mount /dev/sda1 /mnt
chroot /mnt
# Install new shim
apt install shim-signed
# Import new MOK
mokutil --import /var/lib/shim-signed/mok/MOK.der
# Set password, reboot, confirm in UEFI MOK manager
reboot
During reboot, UEFI enters MOK management. Enter the password you set, confirm the new certificate.
Option D: Azure VM Special Case
For Azure Linux VMs with Secure Boot enabled, the platform handles certificate updates automatically for VMs created after September 11, 2025.
But here’s the trap: If you roll back a VM to an image captured before November 7, 2025, Secure Boot will fail. Azure’s KB5062710 explicitly warns about this.
Solution: Disable Secure Boot before rolling back, or redeploy from the latest Azure image.
What the Community Is Saying
The r/hackernews discussion on Reddit had some brutal takes:
“My pure Linux laptop, never ran Windows, Secure Boot always on. Updated today, rebooted, black screen. Microsoft’s certificate expires and my Linux machine dies? What a joke.”
“Shim’s design is fundamentally broken. A compatibility layer for UEFI that becomes a single point of failure.”
“Rolled back an old Azure VM and it wouldn’t boot. Microsoft’s KB doc reads like a legal contract. Ended up disabling Secure Boot to recover.”
These aren’t edge cases. Many people assumed Secure Boot is a Windows-only concern. It’s not. If you boot via UEFI, the entire Secure Boot certificate chain binds every OS.
Long-Term Recommendations
| Best Practice | Details |
|---|---|
| Keep shim updated | Check shim-signed version at least annually |
| Subscribe to distro security bulletins | Ubuntu Security Notice, Fedora Announce, etc. |
| Simulate cert expiration in test | Use faketime or adjust system clock to validate recovery |
| Backup MOK certificates | mokutil --export and store securely |
| Practice Secure Boot recovery in staging | Simulate expired cert, recover via live USB |
FAQ
Do Secure Boot certificates expire in June 2026?
Yes. Microsoft’s Secure Boot CA root certificate expires in June 2026. But don’t panic—your machine won’t instantly brick. It will continue to boot normally. However, new signature updates will no longer be trusted. Any kernel or GRUB signed after June 2026 without the new certificate will be rejected by Secure Boot.
What happens when Secure Boot certificate expires?
Two phases:
- September 11, 2025: Intermediate signing certificate expires. Old shim versions reject newly signed kernels/GRUB, causing boot failures.
- June 2026: Root CA expires. System still boots, but can no longer accept new Secure Boot signature updates. Secure Boot becomes a static policy—only existing signed binaries are trusted.
How to check SSL certificate expiry date in Linux?
This is for SSL/TLS, not Secure Boot. Use:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates
For Secure Boot certificates, use mokutil or sbverify instead.
How often do SSO certificates expire?
SSO certificate validity depends on your IdP (Okta, Azure AD, Keycloak, etc.). Typical lifespan is 1 to 3 years. This is completely unrelated to Secure Boot certificate expiration.
Final Thoughts
Secure Boot certificate expiration is fundamentally a supply-chain trust problem. Microsoft controls the root of the UEFI signing chain. Linux ecosystems depend on shim as a compatibility shim (pun intended). When the certificate expires, every OS relying on that chain takes the hit.
Our hard-learned lesson: don’t treat Secure Boot as either a toy or a panacea. Update shim regularly. Have a recovery plan. Simulate certificate expiration in your test environment. These tasks take an hour upfront but save you a production outage later.
And if you haven’t updated your shim yet? Go do it now. Don’t wait until June 2026 when the root certificate expires.
References & Community Insights
The following authoritative resources were referenced for architectural best practices and specifications: