Как стать автором
Обновить

Комментарии 9

Только вот одного не пойму, зачем эта штука реально нужна (за исключением того, чтобы пользователю не приходилось сталкиваться с назойливыми системными предупреждениями). Были кейсы, что Apple давала нотаризацию malware типа Shlayer. А не подписанные, если на шибаюсь, бинарники из brew до сих пор прекрасно работают и вовсе без нотаризации.

за исключением того, чтобы пользователю не приходилось сталкиваться с назойливыми системными предупреждениями

За этим. Это вы — IT-профессионал, вы умеете читать и понимать предупреждения. В то время как для обычного пользователя подобное окошко читается как «ВЫ СКАЧАЛИ ЗЛОВРЕДНОЕ¹ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ. МЫ НАСТОЯТЕЛЬНО НЕ РЕКОМЕНДУЕМ ЕГО ЗАПУСКАТЬ²». Производители ПО могут легко избежать травм среди своих пользователей, всего за $99 в год.


А не подписанные, если на шибаюсь, бинарники из brew до сих пор прекрасно работают

Пока ещё прекрасно работают. Во-первых, они пока ещё пропускают проверку нотаризации, потому что homebrew не помещает скачанные (или собранные) бинарники в карантин, как это делают браузеры. Во-вторых, они все уже подписанные (либо ключами homebrew, либо вашим локальным, если homebrew собирает их исходников), потому что на M1 уже нельзя запускать неподписанные бинарники в принципе. Пока ещё не важно кем подписано, но должно быть подписано корректно.
__
¹ мы не проверяли
² вы [пока ещё] можете, но мы тут не расскажем как

Большинство cask, установленных через brew, всё так же через настройки нужно первый раз запускать.

Имея валидный сертификат codesign от Эппл или EV сертификат от digicert, можно подписать консольную утилиту macOS сразу при сборке приложения в Xcode или при помощи Эппл codesign tool.

Да, подписать утилиту можно прямо в Хсode сертификатом Developer ID Application (в статье это показано). Но этого недостаточно, если хотите распространять ее до пользователей, например, со своего сайта, так как система безопасности macOS выдаст предупреждение, что "Файл ... невозможно открыть, так как Apple не может проверить его на наличие вредоносного ПО". Чтобы пользователи не видели это предупреждение, необходимо пройти процесс заверения (notarization) на серверах Apple, и для этого нам потребуется второй сертификат Developer ID Installer, так как мы распространяем утилиту самостоятельно, вне Mac App Store.

Нотаризации в macOS подлежат не приложения, а контейнеры дистрибуции (пакеты установщика .pkg, образы .dmg, бандлы .app, .kext, .framework и т.п.). Именно поэтому для нотаризации необходим отдельный (второй) сертификат Developer ID Installer для подписи пакета установщика.

You can notarize several different types of software deliverables, including:

macOS apps

Non-app bundles, such as kernel extensions

Disk images (UDIF format)

Flat installer packages

Насколько я помню pkgbuild не умеет делать uninstall.

Да, pkgbuild не умеет делать uninstall, но в состав пакета установщика можно включить тривиальный shell-скрипт для пакетной автоматизации удаления приложения и его настроек из системы. Это классическая практика для macOS, которая активно использовалась ещё до появления Mac AppStore ...

Простой пользователь который устанавливает CLI tool? Если пользователь работает в терминале, то он уже не простой. Установка через тот же brew намного удобнее, чем скачивание пакетов с сайта и установку через UI. Намного меньше действий. Если пользователь заходит в термина будь то на macOS или Linux систему, то с вероятностью в 90% он знает что такое менеджер пакетов и как им пользоваться.

P.S.

То что статья полезная я не спорю =)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории