Есть ли способ для пользователя Mac, который в настоящее время работает под управлением Snow Leopard или Lion, проверить, возможно, из командной строки терминала, было ли какое-либо приложение, загруженное из сети, цифровой подписью с идентификатором разработчика, выданным Apple?
Если да, то какие преимущества может дать пользователю Mac такая проверка сейчас?
Apple поощряет разработчиков Mac ставить цифровую подпись в своих приложениях Mac с помощью идентификатора разработчика, выданного Apple, который, как объявила Apple, будет использоваться Mac OS в какой-то момент в будущем.
Если у вас установлены инструменты разработчика, вы можете просмотреть информацию о подписи для двоичного файла с помощью этой команды:
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. Для любопытных - вот хороший список для чтения:
spctl
на Маке должно быть (10.7.3 и выше), но пока не понятно, как его использовать для проверки. Те же самые приложения, которые показывают сертификат, не проверяются spctl
. Xcode можно загрузить бесплатно, и вы можете использовать xcrun
версию инструментов, поэтому, когда вы удаляете Xcode из /Applicatins, все следы исчезают с вашего Mac.
bmike
горячая лапа2
bmike