Saya mengunduh aplikasi dari Internet menggunakan Safari. Setelah menjalankannya, macOS memberitahukan bahwa aplikasi tersebut berasal dari pengembang yang tidak dikenal.
Bagaimana MacOS dapat menentukan informasi ini? Di mana metadata penandatanganan untuk aplikasi disimpan?
Jawaban:
Informasi disimpan dalam atribut yang diperluas, dengan informasi tambahan yang berpotensi tertanam dalam aplikasi.
Atribut yang Diperpanjang
Informasi karantina ini disimpan sebagai atribut yang diperluas . Gunakan
xattr
alat untuk melihat atribut yang terkait dengan file atau aplikasi.Atribut yang menyebabkan pesan ini adalah
com.apple.quarantine
.Lihat Bagaimana cara menghapus "atribut diperluas" pada file di Mac OS X? dan Aplikasi tidak dapat dibuka karena berasal dari pengembang yang tidak dikenal untuk detail lebih lanjut.
Gatekeeper dan Code Signatures
Atribut diperluas digunakan oleh Gatekeeper pada macOS dan dibahas dalam Cara mengatur (mengembalikan) atribut com.apple.quarantine?
Tanda tangan digital opsional yang tertanam dalam aplikasi digunakan untuk menentukan pengembang aplikasi. Jika tanda tangan tidak ditemukan, macOS menyajikan aplikasi tersebut dari pengembang yang tidak dikenal.
sumber
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:
Informasi penandatanganan kode diakses dengan memasukkan:
Contoh:
Bagian terpenting adalah rantai sertifikat (dan rantai kepercayaan):
Di sini tiga otoritas berbeda terlihat:
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):
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?"sumber
Tanda tangan disimpan dalam biner aplikasi itu sendiri, dengan beberapa data tambahan dalam bundel aplikasi (dalam file
Contents/_CodeSignature/CodeResources
).Anda bisa mendapatkan beberapa informasi tentang tanda tangan menggunakan utilitas baris perintah
codesign
- misalnya:sumber