Пошаговый рецепт подписания установщиков Mac (.dmg)

Apple хочет, чтобы приложения были подписаны. В более новых версиях MacOS неподписанные приложения выглядят все менее и менее привлекательными.

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

Пока я понял, что необходимо следующее:

  • Register for an Apple ID [1].
    • Agree with endless pages of legalese.
  • Apply for an Apple developer account [2].
    • Choose among several categories (individual, nonprofit, government, ...).
    • Примите дальнейшие страницы юридического языка.
    • Согласитесь с неуказанными членскими взносами, которые отменяются для проектов с открытым исходным кодом.
    • Подождите неопределенное время, пока вы не будете допущены Apple.
  • Create a certificate from Xcode.
    • Open or create an arbitrary project to get to the main menu.
    • В главном меню (Xcode) › Настройки › Аккаунты › Управление сертификатами › + (внизу слева) для создания сертификата.
    • В главном меню (Xcode) › Настройки › Аккаунты › Загрузить профили вручную. Кажется, создается файл с расширением .developerprofile.
  • Отсюда отсутствует неизвестное количество шагов....
  • Maybe the last step involves the command codesign [3], codesign -s <identity> --keychain <full-path-to-keychain> <path-to-disk-image>
    • What is <identity>?
    • Что такое файл связки ключей?

Кто может подтвердить или исправить вышеизложенное и предоставить недостающие шаги?

Обратите внимание, что процесс сборки в конечном итоге должен запускаться из CMake. Поэтому инструменты командной строки предпочтительнее, чем действия с графическим интерфейсом.

[1] https://appleid.apple.com/account

[2] https://developer.apple.com/

[3] https://stackoverflow.com/a/37923530/1017348


person Joachim W    schedule 18.03.2021    source источник


Ответы (1)


Вы можете построить и подписать до завершения, используя Xcode, или вы можете создать, а затем подписать и нотариально заверить двоичные файлы, используя инструменты codesign, altool и stapler.

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

См. Руководство по Xcode — распространение приложения и Распространять вне Mac App Store (macOS).

Apple также опубликовала следующие руководства по подписанию кода и нотариальному заверению:

Личность

Что такое <identity>?

identity — поле общее имя цифрового сертификата, используемого для подписи двоичного файла. Цифровой сертификат представляет собой сертификат X.509, выпущенный Apple. Вы можете получить сертификаты для отправки в магазины приложений Apple и распространения за пределами их магазинов через веб-сайт Apple для разработчиков.

См. раздел Apple Developer — Сертификаты.

Членство в программе Apple Developer Program необходимо для запроса, загрузки и использования сертификатов подписи, выпущенных Apple. Для разработчиков, входящих в состав команды, зарегистрированной как организация, вы также должны быть владельцем учетной записи или администратором, чтобы запрашивать сертификаты распространения, используемые для отправки приложений в App Store.

Брелок

Что такое файл связки ключей?

Управление файлами связки ключей осуществляется с помощью приложения Доступ к связке ключей в macOS, см. Applications/Utilities/Keychain Access. По умолчанию файлы связки ключей пользователя хранятся в папке ~/Library/Keychains.

В файле цепочки для ключей macOS хранит защищенную информацию о пользователе, такую ​​как учетные данные и ключи сертификатов. Файл цепочки для ключей должен быть указан для инструмента codesign, чтобы найти закрытый ключ, связанный с сертификатом подписи.

См. раздел Apple Developer — Службы связки ключей:

Надежно храните небольшие фрагменты данных от имени пользователя.

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

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

Поддержка от Apple

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

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

Запрос технической поддержки

Инцидент технической поддержки (TSI) — это запрос на поддержку на уровне кода для платформ Apple, API и инструменты и доступны для участников Apple Developer Program и Apple Developer Enterprise Program.

person Graham Miln    schedule 18.03.2021