СпонсорствоОтправить
Блог

Подпись и нотаризация простыми словами для тех, кто делает первое Mac-приложение

Автор: Justinas Rolando, создатель MacPip

Короткий ответ

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

Если вы запускали приложение только из Xcode, этот этап выпуска может показаться стеной из сертификатов. Идеи простые, и их всего три. Полные подробности, со ссылками на документы Apple, есть в объяснении того, что такое нотаризация на Mac. Эта статья: короткая версия для создателей.

Три шага

Если вы продаёте только через Mac App Store, последние два шага можно пропустить. Apple подписывает приложения магазина, и её документация говорит, что в процессе магазина есть такие же проверки безопасности.

Что увидят пользователи, если это пропустить

Пользователи получают предупреждение. macOS говорит, что не может проверить приложение, а начиная с macOS Sequoia Control-клик его уже не обходит. Нужно зайти в «Системные настройки» и выбрать «Всё равно открыть». Некоторые на этом моменте сдаются, и я их не осуждаю. Что значит «Apple не смогла проверить» показывает то же предупреждение со стороны пользователя, и это стоит прочитать один раз.

Порядок, который экономит полдня

  1. Завершите сборку. Любое изменение после подписи ломает подпись.
  2. Сначала подпишите вложенный код, например фреймворки и вспомогательные программы, а потом само приложение. Используйте hardened runtime и безопасную метку времени, потому что нотаризация требует и того и другого.
  3. Если выпускаете в DMG, упакуйте так и подпишите сам образ.
  4. Отправьте командой notarytool. Apple говорит, что проверка обычно занимает меньше часа.
  5. Читайте лог, даже если всё прошло успешно.
  6. Выполните степлинг командой stapler.

Проверьте свою сборку

spctl -a -vv /Applications/YourApp.app
xcrun stapler validate /Applications/YourApp.app

Из первой команды нужен вывод source=Notarized Developer ID, из второй сообщение об успехе. Вставьте всё, что получилось, в объяснение нотаризации: там скажут, что означает каждая строка, или подскажут, если что-то не распознано. Текст обрабатывается в вашем браузере и никуда не отправляется.

Затем сделайте тест, который ловит больше всего: скачайте свою сборку через браузер на другом Mac или в другой учётной записи и откройте её. В чек-листе запуска это и остальные шаги в правильном порядке.

Что не значит «нотаризовано»

Это не значит, что приложение хорошее, приватное или безопасное. Это значит, что автоматическая проверка Apple не нашла ничего известного ей. Не обещайте на сайте большего. Как понять, безопасно ли Mac-приложение: что каждая проверка может и чего не может доказать, с точки зрения пользователя.

Что MacPip делает с этим

MacPip просит подписанные и нотаризованные загрузки. Приложения с открытым исходным кодом приветствуются и без этого, а в их отчёте об этом прямо сказано. Синяя галочка означает, что человек проверил приложение в указанную дату, а подпись и нотаризация попадают в отчёт, только если мы подтвердили их на скачанной копии. Это не гарантия безопасности, и об этом говорят наши правила. Когда сборка готова, можно добавить её бесплатно.

Real listings to look at

Check reports on MacPip say what was confirmed on a real copy. These two developer-minded listings are good ones to open and read.

Источники

Читайте дальше

Отправьте приложениеБесплатные инструменты для создателей