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:
$ xattr -p com.apple.quarantine /Applications/*.app
Les informations de signature de code sont accessibles en entrant:
$ codesign -dvvv /Applications/*.app
Exemple:
$ codesign -dvvvv /Applications/Google\ Chrome.app/
Executable=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Identifier=com.google.Chrome
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=273 flags=0x800(restrict) hashes=3+3 location=embedded
OSPlatform=36
OSSDKVersion=658432
OSVersionMin=657664
Hash type=sha256 size=32
CandidateCDHash sha1=bc8e3dffe7d9d5242e09ea80a220ed365d46fdf2
CandidateCDHash sha256=d7ae6211906bb17d593ce9c215d190a81f37e658
Hash choices=sha1,sha256
Page size=4096
CDHash=d7ae6211906bb17d593ce9c215d190a81f37e658
Signature size=8949
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=20. Mar 2018 at 07:23:20
Info.plist entries=36
TeamIdentifier=EQHXZ8M8AV
Sealed Resources version=2 rules=7 files=203
Internal requirements count=1 size=240
La partie la plus importante est la chaîne de certificats (et la chaîne de confiance):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Ici, trois autorités différentes sont visibles:
- Certificat racine: Apple Root CA
- Certificat de développeur Apple intermédiaire: Autorité de certification ID développeur
- Certificat de développeur: Google, Inc. (EQHXZ8M8AV)
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):
- Aucun attribut com.apple.quarantine / aucun certificat de développeur Apple (exemple: brew cask installé Apache CouchDB )
- Aucun attribut com.apple.quarantine / un certificat de développeur Apple (exemple: brew cask installé Google Chrome )
- Un attribut com.apple.quarantine / aucun certificat de développeur Apple (exemple: Apache CouchDB installé en téléchargeant le zip à partir du site Web et en copiant l'application décompressée dans / Applications / )
- Un attribut com.apple.quarantine / un certificat de développeur Apple (Exemple: Google Chrome installé en téléchargeant le dmg depuis le site Web et en copiant l'application à l'intérieur dans / Applications / )
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?"