Skip to main content

    Code Signing Certificate Revoked: What Breaks and What to Do Next

    Revocation is permanent and can invalidate releases you already shipped. What survives, which reason to give the CA, and the order to recover in.

    MS
    My-SSL Team
    ·
    13 min read
    ·
    Published August 20, 2026
    ·
    Last updated August 20, 2026

    The short answer

    Revoking a code signing certificate is permanent, and no certificate authority will reverse it. What happens to software you already shipped comes down to two recorded facts: the revocation date the CA sets, and whether each release carried a timestamp. Signatures timestamped before that date normally keep validating, and anything stamped after it stops being trusted. Under CA/Browser Forum ballot CSC-18, a CA must revoke within 24 hours once private key compromise or suspect code is confirmed, so the decision arrives long before the cleanup does.

    How one revocation date splits a release history into signatures that survive and signatures that stop being trustedA horizontal timeline of releases. A gold vertical line marks the revocation date recorded by the certificate authority. Three releases sit to the left of it and are timestamped, so they keep validating. One release to the right of the line was signed after the revocation date and fails. A fourth release sits to the left but carries no timestamp, and it fails as well because nothing proves when it was signed. A caption strip along the bottom states the rule: a timestamp before the revocation date is what survives, everything else does not.One revocation date, two different outcomesearlier releaseslater releasesRevocation datev1.0timestampedv1.1timestampedv1.2no timestampv1.3signed afterstill validatesstill validatesfailsfailsA timestamp made before the revocation date is what survives. Nothing else does.
    The version numbers matter less than which side of the gold line each build sits on, and v1.2 is the one that catches teams out: it predates the revocation but has nothing to prove it.

    What does revoking a code signing certificate actually do?

    It tells the world to stop trusting that certificate, from a date the CA records, permanently. The CA adds the certificate serial number to its certificate revocation list and to the answers its OCSP responder gives, along with a revocation date and a reason code. Verifiers that check revocation then treat the certificate as untrustworthy. Nothing is deleted and no file is altered; what changes is the answer everyone gets when they ask about the certificate.

    Two properties of that operation surprise people. The first is that it cannot be undone. Certum states outright that revocation is irreversible and ends the subscriber agreement with no refund, and every other publicly trusted CA works the same way, because a revocation you could take back would be useless as a security control. The second is speed: a request submitted through the Certum panel is applied automatically within about an hour. There is no grace period in which to change your mind.

    Revocation is also narrower than its reputation suggests. It acts on one certificate, not on your organization, your publisher identity, or your ability to buy another certificate. Teams sometimes delay revoking a compromised key because they imagine a blacklist that follows them around. There is no such thing. What a revocation does damage is the trust in signatures made with that specific key after the recorded date, and that is the cost worth thinking carefully about.

    What breaks in software you already shipped?

    Releases that were timestamped before the revocation date normally keep validating. Everything else stops. An RFC 3161 timestamp is a countersignature from the CA’s timestamp authority proving when the signature was made, and Microsoft documents that this is what lets a signature outlive the certificate behind it after expiry or revocation. Without one, a verifier has no evidence that the signature predates the problem, so it applies the revocation to the file in front of it.

    This is where a good deal of published advice goes wrong. Some vendor documentation warns flatly that revoking invalidates all code signed with the certificate, timestamped or not. Read as a worst case that is fair enough, and if you are the one deciding whether to revoke, assume it. As a description of the mechanism it is too blunt: the Code Signing Baseline Requirements exist partly so that the split by date can be drawn, and the behaviour of Windows chain validation is to draw it.

    Two caveats keep the picture honest. Some verifiers do not perform the timestamp comparison at all, particularly application control policies such as WDAC or AppLocker rules written to reject any revoked chain outright, and some installers and enterprise deployment tools take the same strict line. And a signature whose timestamp itself cannot be validated gets no benefit from it. The date split is the normal outcome rather than a guarantee that covers every environment your software lands in.

    If you want the timestamp mechanism itself rather than the incident around it, our guide to code signing timestamping covers how the countersignature is built and why the lifetime signing option changes the answer.

    Which revocation reason should you give the CA?

    Give the one that is true, and understand that only the compromise answer changes what happens to your back catalogue. Revocation reasons come from the X.509 reason code list in RFC 5280, and the CA records the code you effectively selected in the CRL entry. Most of them behave identically from your releases’ point of view. The exception is keyCompromise, because it is the reason that justifies setting the revocation date in the past.

    The single question that decides how much of your release history a revocation affectsA decision fork. The starting question asks whether the private key was exposed to anyone outside your control. The yes branch, highlighted in gold, leads to the key compromise reason, a revocation date backdated to the exposure, and a release history split at that date. The no branch leads to the ordinary reasons such as superseded or cessation of operation, a revocation date set at the request, and a release history that is left intact.Only one question changes the blast radiusWas the private key exposedto anyone outside your control?yesnokeyCompromiseCA revokes within 24 hoursDate set back to the exposureAttacker signatures die with itYour history splits at that dateRe-sign and re-release what failssuperseded / cessationOrdinary revocation windowDate set at the requestNothing earlier is affectedYour history stays intactNothing to re-releaseClaiming compromise you did not have costs you releases. Hiding one you did have costs your users.
    Pick the branch that is true, not the one that is convenient. The reason code is recorded in the CRL and is visible to anyone who looks.

    The backdating provision is the part worth understanding before you file anything. The Code Signing Baseline Requirements allow a CA to record a revocation date earlier than the moment it processes the revocation, so the date can be placed before the key was exposed or before suspect code was signed. Anything timestamped after that date stops being trusted, which is exactly the intent when someone else has been signing with your key. It also means the date you supply determines how much of your own work you throw away, so bring an evidence-backed timeline rather than a guess.

    ReasonWhen it fitsEffect on shipped releases
    keyCompromisechanges the outcomeThe private key is out of your control: a token lost or stolen, HSM credentials leaked, a cloud signing account taken over.The CA may record a date before the exposure. Everything timestamped after that date loses trust, including anything an attacker signed.
    supersededYou moved to a new certificate for an ordinary reason and want the old one taken out of circulation. No exposure involved.Revocation date is normally the request date, so earlier timestamped releases keep validating.
    cessationOfOperationThe product line, brand, or legal entity behind the certificate is being retired and the certificate will never be used again.Same as superseded in practice. Past timestamped releases are unaffected.
    affiliationChangedThe organization name, legal form, or address in the certificate no longer matches reality after a rename or restructure.Past timestamped releases are unaffected, but new signing has to wait for a re-validated certificate.

    CA interfaces rarely show these labels. You will more often see a short list in plain language, or a free-text field on a revocation form, and the CA maps your answer onto a code. Say explicitly whether the key was exposed and when, because that sentence is what the mapping turns on.

    When are you required to revoke, and how fast?

    Within 24 hours for compromise and suspect code, and within a window measured in days for everything else. Ballot CSC-18 revised the revocation section of the Code Signing Baseline Requirements in 2023 to align its reasons with the TLS rules and to impose the stricter deadline where it matters: once a CA confirms that a private key was compromised, or that the certificate signed suspect code, it must revoke within 24 hours. Slower circumstances, such as details in the certificate becoming inaccurate, allow a longer window.

    Those deadlines bind the CA, and they start when the CA confirms the problem, not when you first suspect it. The practical consequence runs the other way: your reporting speed sets the clock. A team that spends three days deciding whether a lost laptop counted as key exposure has given away three days during which the key was live and nobody outside the company knew.

    Situations that genuinely require revocation are narrower than the anxious version and wider than the complacent one. Revoke when the key or its activation credentials left your control, when a token or HSM is missing and unaccounted for, when someone who could sign has left under circumstances you cannot verify, when the certificate was issued on information that turned out to be wrong, and when you discover something was signed that should not have been. Ordinary events do not qualify: an expiring certificate, a routine replacement, or a developer changing machines are not revocation triggers.

    What do users and build systems actually see?

    On Windows, the characteristic result code is 0x800B010C, CERT_E_REVOKED, described as a certificate explicitly revoked by its issuer. It surfaces during installation, when an application control policy evaluates a binary, or when someone runs signtool verify /pa /v against the file. The signature and the file are both intact when this appears, which is why re-downloading, clearing caches, or repairing the installation never resolves it.

    The four checks Windows runs on a signed file, and which one produces a revocation errorA left to right sequence of four checks. First, the file hash matches the signature. Second, the certificate chain builds to a trusted root. Third, a revocation lookup against the certificate revocation list or an OCSP responder, highlighted in gold as the step that produces the revoked verdict. Fourth, a comparison of the signature timestamp against the recorded revocation date, which decides whether an otherwise revoked chain is still accepted. Below the sequence, a note states that the first two checks pass in almost every revocation case, which is why the file looks intact while still being rejected.Why the file looks fine and still gets rejected1. Hash checkFile not modifiedpasses2. Chain checkBuilds to a trusted rootpasses3. Revocation lookupCRL or OCSP responderreturns revoked4. Timestamp vs dateSigned before revocation?decides the verdictSteps 1 and 2 pass in almost every revocation case.The binary is intact and the chain is genuine, which iswhy re-downloading or re-installing never helps.
    Support tickets for this almost always start with “the file is not corrupted, I checked” — which is true, and is why the usual fixes do nothing.

    The reports you get from users will rarely mention a code at all. Expect “it says the publisher could not be verified”, an installer that stops without explaining itself, or a deployment tool that quietly refuses a package it accepted last month. Kernel-mode drivers fail hardest and earliest, because driver signature enforcement rejects a revoked chain at load time rather than at install time.

    Rollout is uneven, which makes early reports confusing. CRLs are cached, OCSP responses carry their own validity windows, and a machine that checked yesterday may keep accepting the file for hours after the revocation is published. Machines with no outbound access to the revocation endpoints may not notice for longer still. Treat scattered reports as the leading edge rather than the extent of the problem, and confirm the state yourself with a direct signature check on a clean machine.

    How do you revoke a code signing certificate?

    Through the CA that issued it, and for Certum certificates there are three routes. The fastest is the customer panel at panel.certum.pl: open the certificate under your data security products, use the revocation option in the item menu, and confirm. Certum applies a revocation requested this way automatically within about an hour. The alternatives are a signed revocation letter sent by registered post and a dedicated revocation form, both of which exist for cases where panel access itself is part of the problem.

    Before you confirm, write down three things: the reason, the date from which the certificate should be considered untrustworthy, and the evidence behind that date. Panel flows tend to collect only the reason, so if you need the revocation backdated to a compromise, raise it with the CA in writing rather than assuming the form handles it. Getting this right at the point of submission is much easier than arguing about a recorded date afterwards.

    One thing to sort out first if you can: whether anyone still needs to sign something with the outgoing certificate. Once the revocation lands, a signature made afterwards is worthless, and the ability to produce one at all depends on whether the key is still reachable. Compromise cases override this entirely, and you revoke immediately. For every other reason, finishing the release in flight before you revoke saves a genuinely annoying week.

    What is the recovery sequence after revocation?

    Contain, revoke, re-key, re-sign, re-publish. The order is the point: containment and revocation take minutes and stop the bleeding, while obtaining a replacement certificate takes days and cannot be rushed. Teams that treat the replacement as step one, because it feels like progress, leave a compromised key signing for the whole of that lead time.

    The five recovery steps after a code signing certificate is revoked, in the order that limits exposureFive numbered steps left to right. Step one, contain: pull the token or disable the signing credential so nothing else can be signed. Step two, revoke with the correct reason and date. Step three, obtain a new key and certificate, highlighted in gold as the step with the longest lead time because validation and hardware delivery sit inside it. Step four, re-sign and timestamp the releases that fell after the revocation date. Step five, re-publish and verify what customers download. A note below warns that starting at step three instead of step one leaves a compromised key usable for days.Recovery order, not recovery list1. ContainPull the token,disable the cloudsigning credential2. RevokeCorrect reason,defensible date,written evidence3. Re-keyNew hardware keyand certificate.Longest lead time4. Re-signEverything thatfell after therevocation date5. Re-publishReplace whatcustomers actuallydownload, then verifyThe common mistake is starting at step 3.Waiting for the replacement certificate before revoking leaves a compromised key signing for days.
    Steps 1 and 2 take minutes and cost nothing. Step 3 is where the calendar goes, which is precisely why it should not be blocking the first two.

    Re-keying is more involved than it was before the hardware mandate. Since June 1, 2023, the private key of every publicly trusted code signing certificate has had to be generated and stored in hardware meeting FIPS 140-2 Level 2 or Common Criteria EAL 4+, and marked non-exportable. A replacement therefore means a new token in the post, a new key in an HSM you run, or a new credential on a cloud signing service. The organization details you already had validated are often reusable, which is the part of the timeline you can actually shorten.

    If the replacement is going to a build pipeline, this is the moment to reconsider the delivery model rather than reorder what you had. A token that must be physically present is what turns a certificate incident into a fortnight of manual signing. Our Certum code signing certificates are available with cloud key storage as well as a physical token, so a replacement key can be reachable from a build agent on the day it is issued.

    Re-signing comes last and is narrower than it looks. You only need to re-sign what actually fell on the wrong side of the revocation date and is still being downloaded or installed. Sign each of those with the new certificate, timestamp them, and replace the artifacts customers reach: release pages, update feeds, package repositories, and any installer mirrored by a third party. Then verify one from a clean machine, because the copy your build server produced is not the copy your customers get.

    How do you limit the damage before it happens?

    Timestamp every signature, and know which key signed which release. Those two habits decide almost everything about how bad a revocation is. Timestamping is what preserves the releases that predate the incident; a signing record is what tells you, on the day, which builds you have to re-issue rather than re-issuing the entire catalogue because nobody is sure.

    • Make timestamping non-optional in the pipeline. Fail the build when the timestamp step fails instead of letting it warn and continue. An untimestamped release is a liability that only shows up years later, at the worst possible moment.
    • Keep a signing log. Which certificate, which key, which artifact, which date. Cloud signing services give you this for free; a token in a drawer gives you nothing unless someone writes it down.
    • Separate the keys that have different blast radii. A key used for internal tooling and a key used for the installer a hundred thousand customers run should not be the same key, because one incident then forces one decision about both.
    • Treat certificate custody as an offboarding step. Most revocations we see are not dramatic breaches. They are a token nobody can find after someone left, which is a paperwork problem that became a cryptographic one.
    • Rehearse the first hour. Know who can log into the CA panel, who decides, and where the incident timeline gets written. The 24-hour rule is generous only if the first hour is not spent looking for a password.

    Shorter certificate lifetimes have quietly helped here. Certificates issued on or after March 1, 2026 are capped at 460 days under ballot CSC-31, so the window in which any single key accumulates signatures is smaller than it used to be. The renewal rhythm that came with that change is covered in our breakdown of code signing certificate validity.

    Frequently Asked Questions

    Get instant answers to common questions about SSL certificates and our services.

    Still Have Questions?

    Our SSL experts are available 24/7 to help with any questions about certificates, installation, or technical issues.

    Replacing a revoked certificate

    A revoked certificate is replaced rather than repaired, and after a compromise the key is replaced with it. Our code signing certificates are issued by Certum, a publicly trusted CA operating since 1998, in OV and EV form with either a physical token or cloud key storage. If you are mid-incident and unsure which reason or date to give the CA, our support team has walked customers through it before.

    Related reading