Ops Notes

Linux Secure Boot Certificate Expiration 2025: Will Your System Still Boot? A Hard-Nosed Guide to Diagnosis and Recovery

Infrastructure Visualization

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:

ScenarioRisk LevelTypical Symptoms
Ubuntu 22.04 or older, shim not updatedVery HighBlack screen on boot, Verification failed: (0x1A) Security Violation
Ubuntu 24.04+, shim updated to 15.8+LowNo visible symptoms
Fedora 38 or olderHighSame boot failure
Fedora 39+, shim-x64 updatedLowNormal operation
Pure Linux, Secure Boot disabledNoneEverything works
Dual boot (Windows + Linux)MediumDepends on distro’s shim version
Azure Linux VM with Secure Boot enabledMedium-HighVM 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

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 PracticeDetails
Keep shim updatedCheck shim-signed version at least annually
Subscribe to distro security bulletinsUbuntu Security Notice, Fedora Announce, etc.
Simulate cert expiration in testUse faketime or adjust system clock to validate recovery
Backup MOK certificatesmokutil --export and store securely
Practice Secure Boot recovery in stagingSimulate 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:

  1. September 11, 2025: Intermediate signing certificate expires. Old shim versions reject newly signed kernels/GRUB, causing boot failures.
  2. 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:

Elvin Hui

About the Author: Elvin Hui

Elvin is a Senior Infrastructure Engineer with 10+ years of experience spanning data centers, cloud-native architecture, and network security. Certified in CCNA and AWS Solutions Architecture, I focus on turning real-world production "war stories" into actionable, hardcore technical guides.