Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Нотариальное заверение вашего приложения macOS

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

Если вы разрабатываете на устройстве Apple, вы можете использовать Xcode, инструменты командной строки Xcode, или Unity Cloud BuildСлужба непрерывной интеграции для проектов Unity, автоматизирующая процесс создания сборок на серверах Unity. Подробнее
См. Словарь
для нотариального заверения вашего приложения. Если у вас нет устройства Apple, используйте Unity Cloud Build.

Эта страница содержит информацию о следующих методах нотариального заверения:

Нотариальное заверение с использованием Xcode

В процессе сборки Unity может создать проект Xcode, представляющий ваш проект Unity. Вы можете использовать этот проект Xcode для нотариального заверения вашего приложения. Чтобы создать проект Xcode из проекта Unity, выполните этапы сборки приложения macOS. Информацию о том, как нотариально заверить проект Xcode, см. в документации Apple по нотариальному заверению программного обеспечения macOS перед распространением. .

Нотариальное заверение с использованием инструментов командной строки Xcode

Если вы не можете нотариально заверить свое приложение в среде Xcode или хотите управлять нотариальным заверением вручную, вы можете использовать инструменты командной строки Xcode. Для этого вам нужно:

Подписание кода вашего приложения

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

Идентификация подписи

Unity добавляет сигнатуру кода к каждой создаваемой сборке macOS. Это простая подпись кода, которая не идентифицирует вас как разработчика. Чтобы нотариально заверить приложение, Apple требует, чтобы подпись кода включала криптографическую подпись, идентифицирующую разработчика. Это называется подписью. Обычно вы используете сертификат Developer ID.

Чтобы создать новый сертификат идентификатора разработчика, перейдите на страницу Создать новый сертификат. :

  1. Следуйте инструкциям, чтобы создать закрытый ключ и загрузить запрос на подпись сертификата.
  2. Загрузите сертификат идентификатора разработчика. Формат файла для этого сертификата: .cer.
  3. Нажмите на сертификат, чтобы добавить его в свою связку ключей. В связке ключей он отображается с именем в следующем формате: Идентификатор разработчика приложения: XXX (YYY).

Идентификатор приложения

Чтобы нотариально заверить ваше заявление, Apple необходимо его идентифицировать. Есть два способа получить идентификатор приложения: в Unity или в файле информационного списка свойств встроенного приложения.

  • В Unity:
    1. Выберите Редактировать > Настройки проекта > Проигрыватель.
    2. Разверните раздел Другие настройки и перейдите в раздел Параметры Mac App Store.
    3. Просмотрите значение идентификатора пакета.
  • В файле списка информационных свойств:
    1. В Finder перейдите к созданному приложению.
    2. Нажмите правой кнопкой мыши приложение и выберите Показать содержимое пакета.
    3. Перейдите в раздел Содержание и откройте файл Info.plist.
    4. Ключом, представляющим идентификатор приложения, является CFBundleIdentifier.

Когда у вас есть идентификатор приложения, вы можете зарегистрировать его в Apple. Для этого:

  1. Перейдите на страницу Apple Developer и войдите в систему.
  2. Выберите Сертификаты, идентификаторы и профили.
  3. Выберите Идентификаторы и добавьте идентификатор пакета.

Разрешения

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

Чтобы установить права для вашего приложения:

  1. В том же каталоге, что и созданное вами приложение, создайте файл с тем же именем, что и у вашего приложения, но с расширением .entitlements. Например, если ваше приложение называется Sample, создайте файл с именем Sample.entitlements.
  2. Откройте файл в текстовом редакторе и скопируйте следующее содержимое:
com.apple.security.cs.disable-library-validation com.apple.security.cs.disable-executable-page-protection

Эти разрешения представляют собой минимальные права, необходимые приложению macOS для усиленной среды выполнения. Если вашему приложению требуются дополнительные права, добавьте их в этот список.

Подписание кода

В процессе подписания кода используется командная строка. Чтобы начать, откройте Терминал и перейдите в каталог, в котором находится приложение. Чтобы убедиться, что у вас есть необходимые права на чтение для обработки подписи кода, выполните следующую команду, где "application_name.app" — это имя вашего приложения:

chmod -R a+xr "application_name.app"

Подпись кода использует определенный идентификатор подписи. Обычно это ваш идентификатор подписи приложения ID разработчика. Однако для некоторых служб цифрового распространения, таких как Mac App Store, требуется другое удостоверение подписи. Информацию о том, какое удостоверение подписи требуется для конкретной службы цифрового распространения, см. в документации по этому службе цифрового распространения.

Чтобы подписать приложение, выполните следующую команду, где:

  • "application_name.app" – это созданное вами приложение.
  • `“application_name.entitlements” – это имя файла прав.
  • "Идентификатор разработчика приложения: XXX (YYY)" – это ваше удостоверение подписи.
codesign --deep --force --verify --verbose --timestamp --options runtime --entitlements "application_name.entitlements" --sign "Developer ID Application : XXX (YYY)" "application_name.app"

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

Предупреждение. Использование параметра --deep может вызвать проблемы с подписью кода. Это потому что:

  • Он применяет одни и те же параметры подписи кода и права ко всему коду, который он подписывает.

  • Он подписывает только найденные файлы кода. Если в месте, где система ожидает найти данные, есть файлы кода, использование --deep не подписывает эти файлы кода.

Для получения дополнительной информации о параметре --deep и о том, как решить проблемы с ним, см. Подпишите свой код.

Загрузка в Apple для нотариального заверения

После того как вы подпишите свое приложение, вам необходимо загрузить его в Apple для нотариального заверения. Для этого Apple требуется:

Сжатие приложения

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

  1. Откройте Терминал и перейдите в каталог, в котором находится приложение.

  2. Выполните следующую команду, где:
    • "application_name.app" – это созданное вами приложение.
    • "application_name.zip" – это имя создаваемого сжатого файла.
ditto -c -k --sequesterRsrc --keepParent "application_name.app" "application_name.zip"

Это сжимает ваше приложение и выводит сжатый файл в тот же каталог, что и ваше приложение.

Создание пароля приложения

Для нотариального заверения приложения Apple требуется уникальный пароль в определенном формате. Для генерации пароля приложения необходимо иметь Apple ID. Если у вас его нет, перейдите на страницу Управление Apple ID и создайте его.

Информацию о создании пароля приложения см. в разделе Как создать пароль для приложения. Генерируемый пароль имеет следующий формат: xxxx-xxxx-xxxx-xxxx.

Получение краткого имени вашего провайдера

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

  1. Открыть терминал.
  2. Выполните следующую команду Xcode, где:
xcrun iTMSTransporter -m provider -u apple_id -p xxxx-xxxx-xxxx-xxxx

Начало загрузки

Чтобы Apple нотариально заверила ваше заявление, вам необходимо загрузить его на их серверы нотариального заверения. Для этого:

  1. Откройте Терминал и перейдите в каталог, в котором находится сжатое приложение.
  2. Выполните следующую команду, где:
xcrun altool --notarize-app --username apple_id --password xxxx-xxxx-xxxx-xxxx --asc-provider provider_short_name --primary-bundle-id application_bundle_id --file application_name.zip

Если загрузка прошла успешно, Apple отобразит в Терминале ответ, содержащий идентификатор запроса. Вы можете использовать этот идентификатор запроса для проверки статуса вашего запроса. Это полезно, потому что процесс нотариального заверения может занять несколько часов в зависимости от трафика службы. Для этого:

  1. Откройте Терминал и перейдите в каталог, в котором находится сжатое приложение.
  2. Выполните следующую команду, где:
xcrun altool --notarization-info request_id --username apple_id --password xxxx-xxxx-xxxx-xxxx --asc-provider provider_short_name

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

  1. Откройте Терминал и перейдите в каталог, в котором находится приложение.
  2. Выполните следующую команду, где:
    • application_name.app — это имя вашего приложения:
spctl -a -v application_name.app

Если нотариальное заверение прошло успешно, возвращается сообщение, указывающее, что Apple приняла заявку, и включает ваш идентификатор разработчика.

Сшивание приложения

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

  1. Откройте Терминал и перейдите в каталог, в котором находится приложение.
  2. Выполните следующую команду: "ApplicationName.app" — это имя вашего приложения: xcrun stapler staple "ApplicationName.app".

Нотариальное заверение с помощью Unity Cloud Build

Unity Cloud Build может нотариально заверить и скрепить ваше приложение macOS в процессе сборки. Для этого Unity требуется:

В зависимости от платформы, на которой вы разрабатываете, процесс выполнения некоторых из этих требований различается. Если вы разрабатываете на устройстве Apple, вы можете использовать инструменты командной строки Xcode для получения информации и создания соответствующих файлов. Однако если вы разрабатываете для Windows или Linux, у вас нет доступа к инструментам командной строки Xcode для Apple.

Независимо от того, какую платформу вы используете, процесс получения Apple ID, пароля и файлов прав не зависит от платформы:

  1. Если у вас нет Apple ID, перейдите на страницу Управление Apple ID и создайте его.
  2. Создайте пароль приложения. Информацию о том, как это сделать, см. в разделе Создание пароля приложения.
  3. Если у вас нет подписки Apple Developer, зарегистрируйтесь на странице Apple Developer.
  4. Создайте файл прав для своего приложения. Информацию о том, как это сделать, см. в разделе Права.

После выполнения этих шагов:

Нотариальное заверение Unity Cloud Build для устройств Apple

Если вы разрабатываете на устройстве Apple, вы можете использовать инструменты командной строки Xcode для выполнения требований, перечисленных в разделе Нотариальное заверение с использованием Unity Cloud Build. Затем вы можете настроить Unity Cloud Build для нотариального заверения и сшивания вашего приложения в рамках процесса сборки. Чтобы соответствовать требованиям:

  1. Выполните действия, не зависящие от платформы, в разделе Нотариальное заверение с использованием Unity Cloud Build.
  2. Создайте сертификат идентификатора разработчика и добавьте его в свою связку ключей. Информацию о том, как это сделать, см. в разделе Подписание удостоверения.
  3. Из цепочки для ключей экспортируйте сертификат идентификатора разработчика в виде файла в формате Personal Information Exchange (.p12). Информацию о том, как это сделать, см. в разделе Импорт и экспорт элементов связки ключей с помощью Доступ к связке ключей на Mac.
  4. Узнайте краткое имя поставщика услуг. Информацию о том, как это сделать, см. в разделе Получение краткого имени поставщика услуг.

После выполнения требований заполните и отправьте форму нотариального заверения Unity Cloud Build.

Нотариальное заверение Unity Cloud Build для устройств Windows и Linux

Если вы разрабатываете для Windows или Linux, но хотите создать, нотариально заверить и скрепить свое приложение для macOS, вы не можете использовать инструменты командной строки Xcode. Чтобы выполнить требования, перечисленные в разделе Нотариальное заверение с помощью Unity Cloud Build, чтобы вы могли настроить Unity Cloud Build для нотариального заверения и сшивания вашего приложения в рамках процесс сборки:

  1. Выполните действия, не зависящие от платформы, в разделе Нотариальное заверение с использованием Unity Cloud Build.
  2. Создайте сертификат ID разработчика и загрузите его. Информацию о том, как это сделать, см. в разделе Подписание удостоверения. Примечание. Последний шаг в разделе Подписание удостоверения личности актуален только для пользователей macOS.
  3. Преобразование сертификата идентификатора разработчика в файл PKCS #12 для обмена личной информацией (.p12) формат. Информацию о том, как это сделать, см. в разделе Преобразование сертификата идентификатора разработчика в файл . p12 в Windows и Linux.
  4. Узнайте краткое имя поставщика через учетную запись разработчика Apple. Для этого перейдите на страницу Сведения о членстве и найдите свой идентификатор команды. Вы можете использовать идентификатор команды в качестве короткого имени поставщика услуг.

После выполнения требований заполните и отправьте форму нотариального заверения Unity Cloud Build.

Преобразование сертификата ID разработчика в файл .p12 в Windows и Linux

Файл .p12 содержит сертификат ID разработчика и закрытый ключ. Чтобы создать его из сертификата идентификатора разработчика:

  1. Откройте интерфейс командной строки и перейдите в каталог, содержащий файл сертификата ID разработчика. Если вы не загрузили сертификат идентификатора разработчика, см. раздел Идентификация подписи.

  2. Сертификаты идентификатора разработчика используют формат файла .cer. Преобразуйте этот файл в формат файла .pem. Для этого выполните следующую команду, где:
    • developer_identity.cer – файл сертификата идентификатора разработчика, который необходимо преобразовать.
    • developer_identity.pem – это имя и тип файла для вывода.

    openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM

  3. Создайте новый закрытый ключ. Для этого выполните следующую команду, где:
    • mykey.key – это имя файла и тип файла закрытого ключа для вывода.

    openssl genrsa -out mykey.key 2048

  4. Создайте файл .p12. Для этого выполните следующую команду, где:
    • mykey.key – это файл закрытого ключа, созданный на шаге 3.
    • developer_identity.pem — это файл .pem, созданный на шаге 2.

    openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iphone_dev.p12

Отправка формы нотариального заверения Unity Cloud Build

После выполнения требований, изложенных в разделе Нотариальное заверение с помощью Unity Cloud Build, выполните следующие действия, чтобы настроить нотариальное заверение Unity Cloud Build:

  1. Настройте свой проект для использования Unity Cloud Build. Информацию о том, как это сделать, см. в разделе Сборка Unity Cloud.
  2. Создайте новую цель сборки Mac Desktop в Cloud Build.
  3. Вернитесь на страницу Конфигурация. На этой странице теперь есть раздел Нотариальное заверение. Откройте этот раздел и нажмите РЕДАКТИРОВАТЬ НОТАРИАЛЬНОЕ ЗАВЕРЕНИЕ.
    Раздел, доступный на странице конфигурации.
  4. Включите флаг Нотариальное заверение. Если вы ранее предоставили набор учетных данных для нотариального заверения в Unity Cloud Build для той же организации, вы можете выбрать их в разделе Учетные данные. В противном случае выберите Добавить новые учетные данные для инициализации.
    Раскрывающийся список учетных данных.
  5. Укажите следующее:
  6. Сохраните свои учетные данные.
  7. Вернитесь на страницу История сборки и начните сборку для своего целевого компьютера Mac.
  8. Если сборка прошла успешно, Unity Cloud Build попытается нотариально заверить и стабилизировать результат.
    • Cloud Build запускает команду codesign со следующими флагами: --deep --force --verify --verbose --timestamp - -параметры времени выполнения. В настоящее время невозможно указать пользовательские флаги.
    • Если вы хотите просмотреть дополнительные выходные данные журнала нотариального заверения, задайте переменную среды FASTLANE_NOTARIZE_VERBOSE=true в переменных среды цели сборки.
  9. После того как Unity Cloud Build создаст, нотариально заверит и скрепит ваш проект, вы сможете загрузить сжатый файл, содержащий сборку.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3