When Does This Error Show Up?
I've seen this error mostly in two places. First, when you're trying to sign a driver or an executable using SignTool and it barfs with TRUST_E_SYSTEM_ERROR (0X80096001). Second, during Windows Update on older systems (Windows 7 or early Windows 10 builds) where a system update fails with the same code. Both times, it's because Windows couldn't verify the timestamp on a digital signature.
For example, you're building a .NET app with a code signing certificate from a public CA like DigiCert or Sectigo. You sign the file—all good. Then you run signtool verify /pa myfile.exe and boom, that error. Or you're patching a Windows 7 box and update KB4474419 keeps failing with 0X80096001. Frustrating, right? I know.
Root Cause in Plain English
Digital certificates have an expiration date. But signed files can stay valid after the certificate expires—if they include a timestamp from a trusted timestamp authority (like Comodo or Symantec). Windows checks that timestamp against the system's root certificate store.
The problem: the root certificate that issued the timestamp authority's certificate isn't trusted on your machine. Maybe it expired. Maybe it's missing. Maybe you're on an old Windows build that doesn't have the latest roots. Either way, Windows can't build a trust chain to the timestamp, so it throws 0X80096001.
Another common trigger: your system clock is way off—like years off. Certificate validation uses the current time, and if the timestamp falls outside the certificate's validity window, trust fails. Check your clock first. Seriously. I've wasted hours on that one.
How to Fix It
Step 1: Check Your System Clock
Sounds stupid, but I'm not kidding. Open Date & Time settings. Make sure Set time automatically is on. If you're in a VM or disconnected from the internet, the clock can drift. Sync it manually or run w32tm /resync in an admin Command Prompt.
Step 2: Update Root Certificates (most common fix)
On Windows 7, Windows 8, or early Windows 10 versions (pre-1809), Microsoft releases periodic root certificate updates via Windows Update. But if you're offline or have updates blocked, you need to install them manually.
- Windows 7 SP1: Install KB2813430 (easy fix—download from Microsoft Catalog).
- Windows 8/8.1: Same KB, but the update is already in the OS. Run
certutil -generateSSTFromWU roots.sstto import fresh root certs. - Windows 10: Make sure your system is fully updated. If not, run Windows Update manually or use the Microsoft Update Catalog to grab the latest Servicing Stack Update (SSU).
After updating, reboot. Then try your signing or update again.
Step 3: Manually Import the Timestamp Authority Certificate
If Step 2 doesn't work, the timestamp server's own certificate might be missing or revoked. Here's what to do:
- Find out which timestamp server your signed file used. For code signing with SignTool, it's usually the one in your build script (e.g.,
http://timestamp.digicert.com). - Open that URL in a browser. You'll see the timestamp authority's certificate chain. Download the root and intermediate CA certs (usually in .cer or .crt format).
- Open certlm.msc as Administrator (Local Machine store).
- Right-click Trusted Root Certification Authorities → All Tasks → Import. Browse to the root .cer file. Place it in Trusted Root Certification Authorities.
- Do the same for intermediate certs under Intermediate Certification Authorities.
- Restart your signing tool or Windows Update.
Step 4: Re-sign with a Valid Timestamp
If you're generating the signed file and the error occurs during verification, your signing timestamp might be from an expired or revoked timestamp server. Common offenders: old VeriSign timestamp servers that shut down in 2016. Switch to a live one:
signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a myfile.exeUse /tr (RFC 3161 timestamp) instead of the older /t. The new protocol is more resilient.
Step 5: Clear the Cryptnet URL Cache (last resort)
Windows caches certificate revocation list (CRL) and authority information access (AIA) URLs. If that cache is corrupt, trust verification fails. Run this as Admin:
certutil -urlcache * deleteThis clears everything. Then try again. Be patient—it'll rebuild fresh next time Windows validates a cert.
If It Still Fails
Check Event Viewer under Applications and Services Logs → Microsoft → Windows → CertificateServices → Client-Lifecycle-System or CodeIntegrity → Operational. Look for error event IDs like 64 or 1006 that mention the certificate hash. Paste that hash into Google—you'll often find a discussion or a hotfix KB.
Also, verify your certificate itself is not revoked. Use certutil -verify -urlfetch mycert.cer. If it says "Revoked," you need a new certificate from your CA.
Still stuck? Drop a comment with your Windows build number (run winver) and the exact command/output. I'll help you track it down.