Vérifier les packages pour les certificats expirés dans Mac OS X

De nombreux utilisateurs Mac téléchargent des fichiers de package de mises à jour de liste déroulante ou d'autres logiciels afin de les installer sur plusieurs ordinateurs, évitant ainsi la mise à jour avec le Mac App Store. Ceci est particulièrement fréquent avec les administrateurs de systèmes Mac, où il est plus judicieux de télécharger une seule mise à jour ou un seul programme d'installation et de la distribuer sur un réseau ou de l'installer manuellement via une clé USB. Il n'y a rien de mal à cette approche, et en fait c'est beaucoup plus efficace pour la gestion multi-Mac, mais un hiccup potentiel arrive quand un installateur de paquets ou un fichier de mise à jour a un certificat expiré, ce qui empêche l'installation complète du paquet. situation qui devient évidente lorsque vous obtenez un message d'erreur "(programme d'installation de l'application) a été signé avec un certificat qui a expiré".

Pour éviter cette situation, vous pouvez vérifier vous-même les signatures de package pour voir si elles sont valides, si elles ont expiré ou même si elles n'ont aucune signature.

Comment vérifier l'état des signatures de package sous Mac OS X avec pkgutil

L'excellent utilitaire de ligne de commande pkgutil peut facilement déterminer l'état de n'importe quelle signature et certificat de paquet. Il est facile à utiliser, lancez l'application Terminal à partir de / Applications / Utilities / et essayez-le vous-même.

La syntaxe de base à utiliser pour vérifier l'état d'une signature de package est la suivante:

pkgutil --check-signature /Path/to/Example.pkg

Hit retour et vous saurez si la signature est valide, si la signature a expiré, ou s'il n'y a pas de signature du tout.

Par exemple, supposons que nous ayons un package d'installation du logiciel Mac OS X Combo Update, un scénario courant pour les administrateurs système mettant à jour plusieurs Mac, vous pouvez vérifier l'état de la signature de ce package comme suit:

pkgutil --check-signature ~/Downloads/OSXUpdateCombo10.10.2.pkg
Package "OSXUpdateCombo10.10.2.pkg":
Status: signed by a certificate that has since expired

Dans ce cas, la signature du package de mise à jour a expiré, ce qui signifie qu'une erreur est générée si une tentative d'utilisation est effectuée.

Cependant, tous les installateurs de paquets n'ont pas de signatures, et bien que n'importe quel fichier de mise à jour de logiciel d'Apple le fasse, les paquets de tierces parties ne le font pas souvent. Par exemple, cet exemple de fichier d'installation de package n'a pas de signature et doit être traité de manière appropriée (par exemple, si vous ne faites pas confiance à la source, vous pouvez peut-être reconsidérer son utilisation).

pkgutil --check-signature ~/Downloads/MysterySketchyInstaller-21.pkg
Package "MysterySketchyInstaller-21.pkg":
Status: no signature

Si un fichier de package est douteux, vous pouvez vérifier la signature de code et extraire le paquet sans l'installer avec pkgutil pour l'inspecter, ou si vous préférez utiliser l'interface graphique, une application comme Pacifist propose des outils de gestion de paquets similaires dans un environnement plus convivial. interface, même si elle est encore sur le côté avancé des choses.

Comme tous les bons outils de ligne de commande, vous pouvez même charger des caractères génériques pkgutil pour vérifier facilement plusieurs paquets en même temps, dans cet exemple nous allons vérifier la signature de chaque fichier * .pkg contenu dans ~ / Downloads:

pkgutil --check-signature ~/Downloads/*.pkg
Package "irssi-0.8.17-0.pkg":
Status: no signature

Paquet "wget-4.8.22-0.pkg":
Statut: pas de signature

Paquet "ComboUpdateOSXElCapitan.pkg":
Statut: signé par un certificat expiré depuis

Paquet "InstallOSXSequoiaBeta.pkg":
Statut: valide

Paquet "HRFDeveloperTools.pkg":
Statut: valide

Les caractères génériques permettent de vérifier rapidement l'état des certificats de nombreux fichiers de package, assurez-vous de spécifier * .pkg pour que le processus se termine sans s'arrêter sur un fichier qui n'est pas un package reconnu.