Safari kullanarak İnternet'ten bir uygulama indirdim. MacOS, çalıştırıldıktan sonra uygulamanın tanımlanmamış bir geliştiriciden geldiğini bildirir.
MacOS bu bilgileri nasıl belirleyebilir? Bir uygulamanın imzalama meta verileri nerede saklanır?
Safari kullanarak İnternet'ten bir uygulama indirdim. MacOS, çalıştırıldıktan sonra uygulamanın tanımlanmamış bir geliştiriciden geldiğini bildirir.
MacOS bu bilgileri nasıl belirleyebilir? Bir uygulamanın imzalama meta verileri nerede saklanır?
Yanıtlar:
Bilgiler genişletilmiş öznitelikler içinde depolanır ve ek bilgiler potansiyel olarak bir uygulamaya gömülür.
Bu karantina bilgileri genişletilmiş bir öznitelik olarak depolanır . xattr
Bir dosya veya uygulama ile ilişkili öznitelikleri görüntülemek için aracı kullanın .
Bu iletiye neden olan özellik com.apple.quarantine
.
Bkz Mac OS X bir dosya üzerinde “genişletilmiş özelliklerini” nasıl kaldırırım? ve Uygulama daha fazla ayrıntı için tanımlanmamış bir geliştiriciden olduğu için açılamıyor .
Genişletilmiş özellik tarafından kullanılan Gatekeeper MacOS üzerinde ve tartışılmıştır setine (geri) Nasıl com.apple.quarantine niteliğini?
Bir uygulamanın içine yerleştirilmiş isteğe bağlı bir dijital imza, uygulamanın geliştiricisini belirlemek için kullanılır. İmza bulunmazsa, macOS uygulamayı tanımlanamayan bir geliştiriciden sunar.
Com.apple.quarantine özelliğini kontrol: Aslında mesaj "Tanımlanamayan geliştirici ..." Her iki görevlerin bir kombinasyonu sonucudur ve gerçek imza durum ise (* / İçerik / _CodeSignature / CodeResources cinsinden) kod imzalama kaynaklarını yalnızca * / CodeResources tarafından belirlenir .
Genişletilmiş özelliği aşağıdakileri girerek alabilirsiniz:
$ xattr -p com.apple.quarantine /Applications/*.app
Kod imzalama bilgilerine aşağıdakiler girilerek erişilebilir:
$ codesign -dvvv /Applications/*.app
Misal:
$ 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
En önemli kısım sertifika zinciri (ve güven zinciri):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Burada üç farklı otorite görülebilir:
Bu, uygulamanın, Apple'ın Kök CA'sı tarafından yayınlanan ve imzalanan Apple'ın orta geliştirici yetkilisi tarafından yayınlanan ve imzalanan bir geliştirici sertifikası ile imzalandığı anlamına gelir.
Bu zincir, Google'ı (veya daha doğrusu: Google, Inc. (EQHXZ8M8AV) ekibi) Apple tarafından tanımlanan bir geliştirici olarak nitelendirir.
Ayrıca uygulamaları kendiniz veya başka bir ara / kök yetkiliden bir kod imzalama sertifikası ile kod atayabilirsiniz, ancak bu, Gatekeeper'ın üstesinden gelmez.
Artık Gatekeeper'ın etkin olduğu varsayılarak (ancak otomatik imzalama / yabancı imzalama dikkate alınmadan) dört permütasyon mümkündür:
İlk iki durumda uygulama basitçe başlatılacaktır. Üçüncü durumda, Onaylanmamış Geliştirici mesajını alırsınız. Genişletilmiş özniteliği xattr -d com.apple.quarantine *
(= vaka 1) kaldırarak bunu çözebilirsiniz . Dördüncü durumda, "* İnternetten indirildi, açmak istediğinizden emin misiniz?"
MacOS bu bilgileri nasıl belirleyebilir? Bir uygulamanın imzalama meta verileri nerede saklanır?
İmza, uygulama paketinde (dosyada Contents/_CodeSignature/CodeResources
) bazı ek verilerle birlikte uygulama ikili dosyasında saklanır .
Komut satırı yardımcı programını kullanarak imza hakkında bazı bilgiler alabilirsiniz codesign
- örneğin:
# codesign -dv /Applications/Preview.app
Executable=/Applications/Preview.app/Contents/MacOS/Preview
Identifier=com.apple.Preview
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=21314 flags=0x0(none) hashes=659+5 location=embedded
Platform identifier=4
Signature size=4485
Info.plist entries=35
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=2077
Internal requirements count=1 size=68