Tatsächlich ist die Meldung "Nicht identifizierter Entwickler ..." das Ergebnis einer Kombination beider Aufgaben: Überprüfen des Attributs com.apple.quarantine und der Codesignaturressourcen (in * / Contents / _CodeSignature / CodeResources), während der tatsächliche Signaturstatus lautet ausschließlich bestimmt durch * / CodeResources .
Sie können das erweiterte Attribut erhalten, indem Sie Folgendes eingeben:
$ xattr -p com.apple.quarantine /Applications/*.app
Auf die Codesignaturinformationen wird zugegriffen, indem Folgendes eingegeben wird:
$ codesign -dvvv /Applications/*.app
Beispiel:
$ 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
Der wichtigste Teil ist die Zertifikatskette (und die Vertrauenskette):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Hier sind drei verschiedene Behörden sichtbar:
- Stammzertifikat: Apple Root CA.
- Fortgeschrittenes Apple-Entwicklerzertifikat: Developer ID Certification Authority
- Entwicklerzertifikat: Google, Inc. (EQHXZ8M8AV)
Dies bedeutet, dass die App mit einem Entwicklerzertifikat signiert ist, das von Apples zwischengeschalteter Entwicklerbehörde veröffentlicht und signiert wurde. Dieses Zertifikat wird selbst von Apples Root-Zertifizierungsstelle veröffentlicht und signiert.
Diese Kette qualifiziert Google (oder genauer: das Team / die Einheit Google, Inc. (EQHXZ8M8AV)) als von Apple identifizierten Entwickler.
Sie können Apps auch selbst oder mit einem Codesign-Zertifikat einer anderen Zwischen- / Stammbehörde codieren, dies wird Gatekeeper jedoch nicht überwinden.
Jetzt sind vier Permutationen möglich, vorausgesetzt, Gatekeeper ist aktiviert (ohne Selbstsignierung / Aliensignatur):
- Kein com.apple.quarantine-Attribut / kein Apple Developer-Zertifikat (Beispiel: Brühfass installiert Apache CouchDB )
- Kein com.apple.quarantine-Attribut / ein Apple Developer-Zertifikat (Beispiel: Brühfass installiert Google Chrome )
- Ein com.apple.quarantine-Attribut / kein Apple Developer-Zertifikat (Beispiel: Apache CouchDB wird installiert, indem die Zip-Datei von der Website heruntergeladen und die entpackte App nach / Applications / kopiert wird. )
- Ein com.apple.quarantine-Attribut / ein Apple Developer-Zertifikat (Beispiel: Google Chrome wird installiert, indem das dmg von der Website heruntergeladen und die App in / Applications / kopiert wird. )
In den ersten beiden Fällen wird die App einfach gestartet. Im dritten Fall erhalten Sie die Meldung " Nicht identifizierter Entwickler" . Sie können dies beheben, indem Sie das erweiterte Attribut xattr -d com.apple.quarantine *
(= Fall 1) entfernen . Im vierten Fall erhalten Sie die Meldung "* wurde aus dem Internet heruntergeladen. Möchten Sie sie wirklich öffnen?"