J'ai téléchargé une application sur Internet à l'aide de Safari. Lors de son exécution, macOS notifie que l'application provient d'un développeur non identifié.
Comment macOS peut-il déterminer ces informations? Où sont stockées les métadonnées de signature d'une application?
Réponses:
Les informations sont stockées dans des attributs étendus, avec des informations supplémentaires potentiellement intégrées dans une application.
Attributs étendus
Ces informations de quarantaine sont stockées en tant qu'attribut étendu . Utilisez l'
xattr
outil pour afficher les attributs associés à un fichier ou une application.L'attribut à l'origine de ce message est
com.apple.quarantine
.Voir Comment supprimer les «attributs étendus» d'un fichier sous Mac OS X? et l' application ne peut pas être ouverte, car elle provient d'un développeur non identifié pour plus de détails.
Gatekeeper et signatures de code
L'attribut étendu est utilisé par Gatekeeper sur macOS et est expliqué dans Comment définir (restaurer) l'attribut com.apple.quarantine?
Une signature numérique facultative intégrée à une application est utilisée pour déterminer le développeur de l'application. Si aucune signature n'est trouvée, macOS présente l'application comme provenant d'un développeur non identifié.
la source
En fait, le message "développeur non identifié ..." est le résultat d'une combinaison des deux tâches: vérification de l'attribut com.apple.quarantine et des ressources de signature de code (dans * / Contents / _CodeSignature / CodeResources) alors que l'état de signature réel est uniquement déterminé par * / CodeResources .
Vous pouvez obtenir l'attribut étendu en entrant:
Les informations de signature de code sont accessibles en entrant:
Exemple:
La partie la plus importante est la chaîne de certificats (et la chaîne de confiance):
Ici, trois autorités différentes sont visibles:
Cela signifie que l'application est signée avec un certificat de développeur, publié et signé par l'autorité de développement intermédiaire d'Apple, qui est elle-même publiée et signée par l'autorité de certification racine d'Apple.
Cette chaîne qualifie Google (ou plus exactement: l'équipe / l'unité Google, Inc. (EQHXZ8M8AV)) en tant que développeur identifié par Apple.
Vous pouvez également coder des applications vous-même ou avec un certificat de signature de code d'une autre autorité intermédiaire / racine, mais cela ne surmontera pas Gatekeeper.
Maintenant, quatre permutations sont possibles en supposant que Gatekeeper est activé (mais ne considère pas l'auto-signature / la signature extraterrestre):
Dans les deux premiers cas, l'application se lancera simplement. Dans le troisième cas, vous obtiendrez le message Développeur non identifié . Vous pouvez résoudre ce problème en supprimant l'attribut étendu
xattr -d com.apple.quarantine *
(= cas 1). Dans le quatrième cas, vous obtiendrez le "* a été téléchargé sur Internet, êtes-vous sûr de vouloir l'ouvrir?"la source
La signature est stockée dans le binaire d'application lui-même, avec quelques données supplémentaires dans le bundle d'application (dans le fichier
Contents/_CodeSignature/CodeResources
).Vous pouvez obtenir des informations sur la signature à l'aide de l'utilitaire de ligne de commande
codesign
- par exemple:la source