New in OS X: Get MacRumors Push Notifications on your Mac

Resubscribe Now Close

Expiring Developer Certificates Causing Some Mac Apps to Refuse to Launch

A number of Mac apps failed to launch for users over the weekend because of a change to the way Apple certifies apps that have not been bought directly from the Mac App Store.

Several users of apps including Soulver and PDFPen who had downloaded the apps from the developers' websites all reported immediate crashes on launch. Developers of the apps quickly apologized and said that the issue was down to the apps' code signing certificates reaching their expiration date.

Apple issues developer signing certificates to assure users that an app they have downloaded outside of the Mac App Store is legitimate, comes from a known source, and hasn't been modified since it was last signed. In the past, the expiration of a code signing certificate had no effect on already shipped software, but that changed last year, when Apple began requiring apps to carry something called a provisioning profile.


A provisioning profile tells macOS that the app has been checked by Apple against an online database and is allowed to perform certain system actions or "entitlements". However, the profile is also signed using the developer's code signing certificate, and when the certificate expires, the provisioning profile becomes invalid.

Victims of expired provisioning profiles over the weekend included users of 1Password for Mac who had bought the app from the developer's website. AgileBits explained on Sunday that affected users would need to manually update to the latest version (6.5.5), noting that those who downloaded 1Password from the Mac App Store were unaffected. The developers' surprise was explained in a blog post:
We knew our developer certificate was going to expire on Saturday, but thought nothing of it because we believed those were only necessary when publishing a new version. Apparently that's not the case. In reality it had the unexpected side effect of causing macOS to refuse to launch 1Password properly.
Currently, the common factor among affected apps appears to be those that were issued iCloud entitlements as part of their provisioning profile. Smile, developers of PDFpen and PDFpenPro, told TidBITS that users would need to manually download the latest updates to the apps to fix the problem.

Acqualia, developers of number-crunching app Soulver, also apologized for the problem and asked affected users to download an update to fix the issue.

As the above suggests, the immediate solution for developers with potentially affected apps is to renew their code signing certificates before they expire. AgileBits said the incident had given them "a new understanding of the importance of expiring provisioning profiles and certificates" and would be renewing its current certificate, due to expire in 2022, "far before then".



Top Rated Comments

(View all)

5 weeks ago

Very, very poor show from the developers. No excuse for their laziness/lack of awareness.


That's got to be the saddest reply I've seen this year. Go blame the developers for Apple's BULLCRAP NONSENSE. :rolleyes:

Software you have already installed and was already validated should NEVER STOP WORKING. PERIOD. There is NO EXCUSE for what Apple did as this will invalidate any software that authors stop updating.

What happens if an author dies or stops developing Mac software? Your older software should just stop working? What a load of crap and even more so for someone defending Apple.

As far as I'm concerned it's just another reason NOT to upgrade to Sierra. Apple is doing its damn best to screw the pooch for everyone when it comes to open software development. They clearly want the tools in place to invalidate your entire software library at the push of a button like they can already do on iOS devices and slowly keep heading in that direction with every Mac OS update.

Lets not forget last year's BS where Apple forgot to renew THEIR OWN certificates which caused total HAVOC with App Store Applications! My god was that a fracking mess! And did Apple do anything to make up for it? Yeah, they made Sierra even more bonkers nuts. Great job Apple. INFERIOR products is sadly becoming par for the course with Apple. (Wasn't that just a week ago I ready about black paint chipping off brand new iPhones?) :confused:
Rating: 46 Votes
5 weeks ago

Amateur hour. Devs are happy to bemoan Apple taking their 30% - but can't even be bothered to sort this out?


The Apple documentation says



* Developer ID Application Certificate and Developer ID Installer Certificate (Mac applications)
If your certificate expires, users can still download, install, and run versions of your Mac applications that were signed with this certificate. However, you will need a new certificate to sign updates and new applications. If your certificate has been revoked, users will no longer be able to install applications that have been signed with this certificate.


https://developer.apple.com/support/certificates/

I think this is definitely an Apple bug. Developers were just relying on the information given by Apple, which turned out to be false.
Rating: 11 Votes
5 weeks ago
N

"We knew our developer certificate was going to expire on Saturday, but thought nothing of it because we believed those were only necessary when publishing a new version."

Seems to me Apple was very clear, while the developer in this care decided not only to ignore it, but to admit it....

no, the developers didn't think anything of it because Apples documentation clearly states that the apps will continue to work.

https://developer.apple.com/support/certificates/
Rating: 5 Votes
5 weeks ago

The page you linked clearly talks ONLY about MAS apps....and MAS purchases were not affected...don't see your point.

EDIT:
If your certificate has been revoked, users will no longer be able to install applications that have been signed with this certificate.

An expired certificate is..."revoked"


Wrong, wrong, wrong. Expired and Revoked are completely different things. "Expired" means "this is a perfectly fine certificate and always was, but unfortunately it is now out of date". "Revoked" means "this is a highly dodgy certificate that should have never been trusted in the first place. Unfortunately we only found out just now. So don't trust anything signed with this certificate".
Rating: 4 Votes
5 weeks ago

I was pointing out if the developer or company walks away from the app (or dies), then that app may very well stop working due to other circumstances like OS updates.


Yes, even without this certificate issue, an abandoned app may stop working. Or it may not - responsible OS developers don't introduce app-breaking changes lightly, and you can always choose to hold off major OS updates for a year or two until you've found a new solution.

With this issue, an abandoned app will stop working when the certificate expires. Like clockwork (you don't know when D-day is, so it will come without warning for you, but it is pre-ordained) For a totally avoidable (and, in this case, apparently undocumented) reason. Even if you don't upgrade the OS.

The certificate needs to have been valid when the app was signed. There's absolutely no security reason to do more than pop up a warning if it has expired (as opposed to revoked) when the app is run.

This is either a bug or a prime example of "defective by design".
Rating: 4 Votes
5 weeks ago

When I read this I have a feeling this is only about distribution through official channels. I may be wrong though.


Developer ID signed apps can only be distributed outside of the Mac App Store. This is what Developer ID is for. In my opinion definitely an Apple bug.
Rating: 3 Votes
5 weeks ago
Does this mean that some time in the future you can't open apps you have installed on your computer, if the developer is no longer providing you with updates with an up-to-date certificate?
Or you should at that point disable the check from macOS?
Rating: 3 Votes
5 weeks ago
Gotta love DRM...

Glassed Silver:win
Rating: 3 Votes
5 weeks ago

Expired certificate is no longer trusted. Revoked certificate is no longer trusted, although it did not expire yet. In terms of certificate management, both lead to the same status: cert is not trusted. Hence the described issue.


Completely different. Expired certificate was trusted. It was used to verify the app, therefore the app can be trusted. Expiration doesn't matter: The app was verified with a trusted certificate, so it can be trusted, 100 years after expiration of the certificate.

A revoked certificate has just been found out to be untrustworthy. It should never have been trusted in the first place. The app was verified with a certificate that should never have been trusted, therefore the app cannot be trusted.

It's like the difference between a child minder who let his certification slip, and a child minder who you just found is a multiple child killer. You don't trust either, but there is just that tiny little difference... And of course if you had been using a child minder for a year and his certification runs out, it's still the same person so you can trust them just as much as the day before.
Rating: 3 Votes
5 weeks ago


Expired certificate is no longer trusted. Revoked certificate is no longer trusted, although it did not expire yet. In terms of certificate management, both lead to the same status: cert is not trusted. Hence the described issue.


That's no longer true, though it was once true back in the early days of crypto. These days, there's a fundamental difference between revocation and expiration when you're dealing with offline content:

* A revoked certificate is treated as untrusted, period, regardless of when content was signed.
* An expired certificate is trusted for data that was signed after the expiration date.

And even revoked certificates have a revocation date so that under certain circumstances, you could ostensibly trust specific uses of a certificate that occurred prior to the revocation date, but I don't think anybody does so.

To support the ability to validate signed content after the expiration date (which is necessary for many reasons, not just app validation), Apple and others use timestamp servers, which essentially add an additional digital signature to prove (as long as you trust the timestamp server) that the content in question was signed prior to the certificate's expiration date. Any content signed using a certificate prior to its expiration is therefore supposed to be trusted after the expiration date.

https://en.wikipedia.org/wiki/Trusted_timestamping

What's happening here is one of two things:

* Apple broke something in El Capitan such that the timestamp isn't respected.
* The developer disabled timestamp support when running codesign.

My guess is the first, or else it would just be one developer.



I do agree Apple failed to clarify what exactly happens after certificate is no longer trusted. However, Agilebits failed to verify their applications, "assuming" in their own words it would still work.


Apple explicitly said what would happen after the certificate expires. Content signed prior to the expiration date is still trusted. That isn't happening. This is a bug. Period.
Rating: 3 Votes

[ Read All Comments ]