Sebenarnya pesan "Pengembang tidak dikenal ..." adalah hasil kombinasi dari kedua tugas: memeriksa atribut com.apple.quarantine dan sumber daya penandatanganan kode (di * / Konten / _CodeSignature / CodeResources) sementara status penandatanganan aktual adalah semata-mata ditentukan oleh * / CodeResources .
Anda bisa mendapatkan atribut yang diperluas dengan memasukkan:
$ xattr -p com.apple.quarantine /Applications/*.app
Informasi penandatanganan kode diakses dengan memasukkan:
$ codesign -dvvv /Applications/*.app
Contoh:
$ 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
Bagian terpenting adalah rantai sertifikat (dan rantai kepercayaan):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Di sini tiga otoritas berbeda terlihat:
- Sertifikat root: Apple Root CA
- Sertifikat pengembang Apple perantara: Otoritas Sertifikasi ID Pengembang
- Sertifikat pengembang: Google, Inc. (EQHXZ8M8AV)
Ini berarti bahwa aplikasi ditandatangani dengan sertifikat pengembang, diterbitkan dan ditandatangani oleh otoritas pengembang menengah Apple, yang itu sendiri diterbitkan dan ditandatangani oleh Apple Root CA.
Rantai ini memenuhi syarat Google (atau lebih tepatnya: tim / unit Google, Inc. (EQHXZ8M8AV)) sebagai pengembang yang diidentifikasi Apple.
Anda juga dapat menggunakan appsign codesign sendiri atau dengan sertifikat pensignifikan dari otoritas perantara / root lain tetapi ini tidak akan mengatasi Gatekeeper.
Sekarang, empat permutasi dimungkinkan dengan asumsi Gatekeeper diaktifkan (tetapi tidak mempertimbangkan penandatanganan sendiri / penandatanganan asing):
- Tidak ada atribut com.apple.quarantine / tidak ada sertifikat Pengembang Apple (Contoh: brew cask menginstal Apache CouchDB )
- Tidak ada atribut com.apple.quarantine / sertifikat Pengembang Apple (Contoh: brew cask menginstal Google Chrome )
- Atribut com.apple.quarantine / tidak ada sertifikat Pengembang Apple (Contoh: Apache CouchDB diinstal dengan mengunduh zip dari situs web dan menyalin aplikasi yang tidak di-zip ke / Aplikasi / )
- Atribut com.apple.quarantine / sertifikat Pengembang Apple (Contoh: Google Chrome diinstal dengan mengunduh dmg dari situs web dan menyalin aplikasi di dalam ke / Aplikasi / )
Dalam dua kasus pertama aplikasi hanya akan diluncurkan. Dalam kasus ketiga Anda akan mendapatkan pesan Pengembang Tidak Diidentifikasi . Anda dapat menyelesaikan ini dengan menghapus atribut yang diperluas xattr -d com.apple.quarantine *
(= case 1). Dalam kasus keempat Anda akan mendapatkan "* diunduh dari Internet, apakah Anda yakin ingin membukanya?"