Проверяете приложения на наличие идентификатора разработчика "GateKeeper"?

Есть ли способ для пользователя Mac, который в настоящее время работает под управлением Snow Leopard или Lion, проверить, возможно, из командной строки терминала, было ли какое-либо приложение, загруженное из сети, цифровой подписью с идентификатором разработчика, выданным Apple?

Если да, то какие преимущества может дать пользователю Mac такая проверка сейчас?

Apple поощряет разработчиков Mac ставить цифровую подпись в своих приложениях Mac с помощью идентификатора разработчика, выданного Apple, который, как объявила Apple, будет использоваться Mac OS в какой-то момент в будущем.

Насколько я понимаю, Apple не столько выдает идентификатор разработчика, сколько подписывает сертификат разработчика, чтобы, когда они используют сертификат Apple для подписи своего кода, компьютеры Mac с включенным привратником проверяли этот подписанный код, когда он помещен в карантин и еще не очищен для работает на вашем Mac.
Поскольку это скорее сайт вопросов и ответов для пользователей, и можете ли вы объяснить это в терминах, которые могли бы лучше понять не разработчик?
Разработчики будут сотрудничать с Apple, чтобы обеспечить правильную подпись приложений.

Ответы (2)

Если у вас установлены инструменты разработчика, вы можете просмотреть информацию о подписи для двоичного файла с помощью этой команды:

codesign -dvvv <path to app.app>

Вывод выглядит следующим образом:

Executable=/Volumes/Big Disk/F376/Projects/<My App>
Identifier=<My Bundle ID>
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=3958 flags=0x0(none) hashes=189+5 location=embedded
Hash type=sha1 size=20
CDHash=761b0d1XXXXXXXXXX0dc8dd42e38eb445fb5341f
Signature size=8504
Authority=Developer ID Application: XXXXXX
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=May 7, 2013 3:07:59 PM
Info.plist entries=30
Sealed Resources rules=4 files=128
Internal requirements count=1 size=224

Не слишком удаляясь от темы, вы можете проверить, был ли подписан какой-либо двоичный файл в рамках подготовки к Gatekeeper, с помощью инструментов командной строки otoolили pagestuff, которые Xcode установит как часть дополнительных загрузок.

введите описание изображения здесь

Если вы не хотите их устанавливать, вы также можете использовать xcode-selectи xcrunзапускать эти инструменты из того места, где они находятся, в приложении Xcode, которое загружается в /Applications.

Вот приложение, которое выглядит подписанным и готовым к работе с Gatekeeper — MarsEdit

mac:Applications me$ xcrun otool -l /Applications/MarsEdit.app/Contents/MacOS/MarsEdit |grep LC_CODE_SIGNATURE
      cmd LC_CODE_SIGNATURE
mac:Applications me$ xcrun pagestuff /Applications/MarsEdit.app/Contents/MacOS/MarsEdit -a | grep signature
File Page 241 contains data of code signature (x86_64)
File Page 242 contains data of code signature (x86_64)
File Page 243 contains data of code signature (x86_64)
File Page 423 contains data of code signature (i386)
File Page 424 contains data of code signature (i386)
File Page 425 contains data of code signature (i386)
File Page 426 contains data of code signature (i386)

Теперь это даже не говорит вам, действителен ли ключ при проверке вашей цепочки для ключей. Для этого требуется, чтобы разработчик использовал ключ, подписанный Apple, и Apple отправила на ваш Mac соответствующий ключ подписи, чтобы убедиться, что ключ разработчика является «доверенным».

Поскольку это довольно сложно, вы можете просто включить проверку (пожалуйста, сохраните всю важную работу и, ПОЖАЛУЙСТА, СДЕЛАЙТЕ РЕЗЕРВНУЮ БАНКУ ВАШЕГО MAC, ПРЕЖДЕ ЧЕМ ЭТО СДЕЛАТЬ) на 10.7.3:

  • sudo spctl --enable#если вы не знаете, что такое sudo, вам следует пропустить это, пока вы не поймете, что неправильная команда может стереть вашу систему или ваши файлы. Все, совсем ушли.

Похоже spctl, что он улучшен для 10.7.4, но я не исследовал его больше, чем прочитал справочную страницу для этого инструмента. Очевидно, это будет способ проверить, очищено ли конкретное приложение или нет, а также выполнить более низкоуровневое включение / отключение различных правил и проверок, которые будут поддерживать маркетинговый термин Gatekeeper.

Что касается того, почему вы можете проверить, это будет только из праздного любопытства или какого-то права на хвастовство, если вы на самом деле не разработчик, которому нужно проверить это и убедиться, что ваш код работает на обеих ОС (Mountain Lion и Lion).

Для большинства людей достаточно знать, что такое Gatekeeper. Для любопытных - вот хороший список для чтения:

Так что это можно сделать только в настоящее время, загрузив Xcode?
У вас spctlна Маке должно быть (10.7.3 и выше), но пока не понятно, как его использовать для проверки. Те же самые приложения, которые показывают сертификат, не проверяются spctl. Xcode можно загрузить бесплатно, и вы можете использовать xcrunверсию инструментов, поэтому, когда вы удаляете Xcode из /Applicatins, все следы исчезают с вашего Mac.