Safeguard
Developer Tools•

What happens when a code signing certificate expires on each platform?

Expiry hits Apple, Windows, Android and PowerShell differently. Compare what breaks on each and what to do, from timestamps to key validity, in one table.

Safeguard Security Team
4 min read

It depends on the platform. On Windows, an unstamped package stops installing after expiry but an installed app keeps running. On Apple, store apps are unaffected but new uploads fail, and in-house apps stop. On Android, an expired key blocks smooth updates. A timestamp fixes the Windows case.

The comparison

PlatformWhat breaks on expiryWhat protects you
Windows MSIXNew installs of an untimestamped package fail. Installed apps keep running.A timestamp when signing
PowerShell scriptsA signature is valid until expiry, or as long as a timestamp can verify signing timeA timestamp
Apple App Store distributionExisting store apps unaffected. New uploads signed with it fail.Renewing before expiry
Apple in-house distributionUsers can no longer run apps signed with itRenewing before expiry
AndroidUsers can no longer seamlessly upgrade to new versionsA long validity period, 25 years or more

Each row comes from the vendor pages listed under sources.

Why they differ

The platforms answer different questions at different times. Windows checks a package's signature when it installs, so time of signing matters and a timestamp can prove it. Apple checks distribution identity at upload for the store, but on device for in-house apps, so the break shows up in different places. Android treats the key as the identity of the app across updates, so expiry affects every future update, not a single install.

Definitions

A timestamp is a signed record of when a signature was made. Validity is the start and end date of a certificate or key. Renewal means getting a new certificate before the old one expires, which on some platforms means a new identity and on others the same one.

A single expiry inventory

Make one list for the whole team. For every signing certificate or key, record:

  1. Platform and purpose, such as Windows installer or iOS store builds.
  2. Owner, a named person and a backup.
  3. Where the private key lives.
  4. Expiry date and the date you will start renewal.
  5. What breaks if it lapses, taken from the table above.
  6. Where the renewed key must be updated, such as CI secrets and profiles.

Review the list monthly, and again before each major release.

Renewal order of operations

  1. Get the new certificate or key issued.
  2. Update CI secrets in a test environment and build.
  3. Verify the signature and timestamp on the test build.
  4. Switch the release job to the new identity.
  5. Keep the old identity available until the last build using it is out of support.
  6. Record the change.

A related renewal plan for the shorter Windows validity period is at /resources/blog/code-signing-certificate-460-day-validity-renewal-plan.

A note on revocation

Expiry is a planned event. Revocation after a key theft is not, and the response is different. For a theft, follow the incident steps in /resources/blog/stolen-code-signing-certificate-response-runbook.

Where Safeguard fits

Expiry planning keeps releases flowing. Safeguard checks what is inside them with dependency scanning and SBOMs, and offers a free scan at gold.safeguard.sh/scan.

Quick check

Which platform keeps installed apps running after expiry?

Microsoft says an installed MSIX app keeps running. Apple says existing App Store apps are unaffected, though in-house apps stop.

What single step helps Windows signatures survive expiry?

Timestamping at signing time. Microsoft says a timestamped package still installs after the certificate expires.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.