MacOS, İnternet'ten indirilen bir uygulamanın imzalama durumunu nasıl tanımlar?


8

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?


Sorunuzu anlarsam, Safari'de indirdiğiniz bir uygulama Apple tarafından bilinen bir geliştirici tarafından imzalanmadığı için bu uyarıyı alıyorsunuz. Bilgisayarınızda xyz programının nerede olduğunu soruyor musunuz?
Jake3231

Yanıtlar:


13

Bilgiler genişletilmiş öznitelikler içinde depolanır ve ek bilgiler potansiyel olarak bir uygulamaya gömülür.

Genişletilmiş Özellikler

Bu karantina bilgileri genişletilmiş bir öznitelik olarak depolanır . xattrBir 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 .

Ağ Geçidi Denetçisi ve Kod İmzaları

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.


5
Bu tam olarak doğru değil. Karantina verileri, indirilen bir dosyanın kaynağını izlemek için kullanılır , ancak imza başka bir yerdedir.
duskwuff -inactive-

1
@duskwuff doğru. Karantina açılır pencerede "XXX İnternetten indirildi, açmak istediğinizden emin misiniz?"
Barmar

1
Tüm dosyalar ve uygulamalar kod imzalı değildir. Birçok uygulama yoktur, bu nedenle bu durumlarda gömülü imza yoktur. Bu "tanımlanamayan geliştirici" mesajları için geçerli olacaktır.
Graham Miln

7

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:

  1. Kök sertifika: Apple Kök CA
  2. Ara Apple geliştirici sertifikası: Geliştirici Kimliği Sertifika Yetkilisi
  3. Geliştirici sertifikası: Google, Inc. (EQHXZ8M8AV)

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:

  • Com.apple.quarantine özelliği yok / Apple Developer sertifikası yok (Örnek: demlemek fıçısı yüklü Apache CouchDB )
  • Com.apple.quarantine özelliği / Apple Geliştirici sertifikası yok (Örnek: demlenmiş fıçı Google Chrome yüklü )
  • Bir com.apple.quarantine özniteliği / Apple Developer sertifikası yok (Örnek: Web sitesinden zip'i indirip sıkıştırılmamış uygulamayı / Applications / dizinine kopyalayarak Apache CouchDB yüklendi )
  • Bir com.apple.quarantine nitelik / Apple Geliştirici sertifikası (Örnek: Google Chrome web sitesinden dmg indirilmesi ve / Uygulamalar için uygulama içini kopyalayarak yüklü / )

İ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?"


5

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.