How iOS 12 Handles Developer Certificate Expiration
This article provides an overview of how Apple's iOS 12 operating system manages developer and enterprise certificate expirations and handles trust warnings. It covers the initial security prompts users encounter when installing sideloaded or in-house applications, the exact system behavior when a provisioning profile or certificate lapses, and the background verification mechanisms iOS 12 employs to maintain device integrity.
The Untrusted Enterprise Developer Warning
When an application signed with an enterprise or developer certificate is sideloaded onto an iOS 12 device rather than installed via the App Store, the operating system blocks it from launching immediately. The user is presented with an "Untrusted Enterprise Developer" alert.
To bypass this and run the app, the certificate must be manually trusted:
- Open Settings on the iOS 12 device.
- Navigate to General > Profiles & Device Management (or Profiles depending on configuration).
- Select the developer profile under the Enterprise App section.
- Tap Trust "[Developer Name]" and confirm the action.
Once trusted, all apps signed with that specific certificate can launch freely until the certificate expires, is revoked, or the profile is deleted.
Certificate Expiration Behavior
In iOS 12, developer certificates and provisioning profiles have finite lifespans—typically one year for Apple Developer Program certificates.
When a certificate expires:
- Immediate Launch Failure: If an application's certificate expires, iOS 12 will immediately refuse to open the app.
- Error Notification: Tapping the app icon results in an alert stating, "Unable to Verify App: A network connection is required to verify the trust of the developer..." or a message indicating the app is no longer available because its integrity could not be verified.
- No Manual Override: Unlike the initial installation trust prompt, iOS 12 does not provide a user-facing override for an expired certificate in Settings.
The only resolution is for the developer to rebuild and resign the application using an active certificate and updated provisioning profile, followed by reinstalling the app on the device.
Revocation vs. Expiration (OCSP Checks)
iOS 12 actively distinguishes between expired certificates and revoked certificates using the Online Certificate Status Protocol (OCSP):
- Expiration: Handled locally based on the device's system clock and the embedded expiration date in the mobileprovision file and certificate. If the device's clock exceeds the certificate validity period, execution is terminated.
- Revocation: Handled over the network. iOS 12
contacts Apple's OCSP servers (
ocsp.apple.com) periodically when the app is launched. If Apple or the enterprise administrator revokes the certificate, the device caches this status, invalidates the trust token, and instantly blocks subsequent launches with an untrusted error.
If an iOS 12 device remains completely offline, an app with a revoked certificate may temporarily continue to run until the device connects to the internet and performs an OCSP validation check. However, an expired certificate will stop working regardless of connectivity.