Vérifier les paquets pour les certificats expirés dans Mac OS X
De nombreux utilisateurs de Mac téléchargeront des fichiers de mises à jour combinées ou d'autres logiciels afin de les installer sur plusieurs ordinateurs, évitant ainsi les mises à jour avec le Mac App Store. Cette pratique est particulièrement courante chez les administrateurs de systèmes Mac, où il est plus logique de télécharger une seule fois une mise à jour ou un seul programme d'installation et de le distribuer sur un réseau ou de l'installer manuellement sur une clé USB. Il n'y a rien de mal à cette approche et, en fait, elle est beaucoup plus efficace pour la gestion multi-Mac, mais un contretemps potentiel se produit lorsqu'un installateur de paquets ou un fichier de mise à jour a un certificat expiré, ce qui empêchera l'installation complète du paquet, une situation qui devient évidente lorsque vous obtenez un message d'erreur "(application installer) a été signé avec un certificat qui a expiré".
Pour éviter cette situation, vous pouvez vérifier vous-même les signatures des colis pour voir si elles sont valables, si elles ont expiré, ou même si elles n'ont pas de signature du tout.
Comment vérifier l'état de la signature des paquets dans Mac OS X avec pkgutil
L'excellent utilitaire en ligne de commande pkgutil peut facilement déterminer le statut de toute signature et de tout certificat de paquet. Il est facile à utiliser, alors lancez l'application Terminal à partir de /Applications/Utilitaires/ et essayez-la vous-même.
La syntaxe de base à utiliser pour vérifier l'état de la signature d'un paquet est la même :
pkgutil --check-signature /Path/to/Example.pkg
Appuyez sur "Retour" et vous découvrirez si la signature est valide, si elle a expiré ou si elle n'existe pas du tout.
Par exemple, disons que nous avons un paquet d'installation du logiciel Mac OS X Combo Update, un scénario courant pour les administrateurs système qui mettent à jour plusieurs Macs, vous pourriez vérifier l'état de la signature de ce paquet de cette manière :
pkgutil --check-signature ~/Downloads/OSXUpdateCombo10.10.2.pkg
Paquet "OSXUpdateCombo10.10.2.pkg":
Statut : signé par un certificat qui a expiré depuis
Dans ce cas, la signature du paquet de mise à jour a expiré, ce qui signifie qu'une erreur se produira en cas de tentative d'utilisation.
Cependant, tous les installateurs de paquets ne disposent pas de signatures et, si les fichiers de mise à jour des logiciels d'Apple en ont, les paquets de tiers n'en ont souvent pas. Par exemple, ce fichier d'installation de paquets n'a pas de signature et doit être traité de manière appropriée (c'est-à-dire que si vous ne faites pas confiance à la source, vous devriez peut-être reconsidérer la possibilité de l'utiliser).
pkgutil --check-signature ~/Downloads/MysterySketchyInstaller-21.pkg
Paquet "MysterySketchyInstaller-21.pkg":
Statut : pas de signature
Si un fichier de paquet est douteux, vous pouvez vérifier la signature de code et extraire le paquet sans l'installer avec pkgutil pour lui donner une inspection plus approfondie, ou si vous préférez utiliser l'interface graphique, une application comme Pacifist offre des outils de gestion de paquets similaires dans une interface plus conviviale, même si elle est encore du côté avancé des choses.
Comme tous les bons outils en ligne de commande, vous pouvez même utiliser les jokers 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
Paquet "irssi-0.8.17-0.pkg":
Statut : pas de signature
Paquet "wget-4.8.22-0.pkg":
Statut : pas de signature
Paquet "ComboUpdateOSXElCapitan.pkg":
Statut : signé par un certificat qui a expiré depuis
Paquet "InstallOSXSequoiaBeta.pkg":
Statut : valide
Paquet "HRFDeveloperTools.pkg":
Statut : valide
Les jokers permettent de vérifier rapidement l'état des certificats de nombreux fichiers de paquets différents. Assurez-vous simplement de spécifier *.pkg pour que le processus se termine sans s'arrêter sur un fichier qui n'est pas un paquet reconnu.