Unity 6.3
0 онлайн 72 гостей 3 в системе
Вход
Разработка платформы Шаг 244 из 387

Кодовая подпись заявки

Подписание кода – это процесс создания подписи кода для приложения. Эта подпись гарантирует целостность приложений и защиту от любых манипуляций. Устройства Apple используют подпись кода приложения для обнаружения изменений, произведенных после того, как разработчик создал подпись кода. Если приложение не имеет подписи кода, устройство предупреждает пользователя, прежде чем они откроют его.

Примечание: Вы должны подписать код вашего приложения, чтобы нотариально заверить его с помощью командной строки Xcode или Unity Автоматизация сборки.

Создание подписывающего удостоверения

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

Чтобы создать новый сертификат разработчика ID, выполните следующие действия:

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

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

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

  • В Unity:
    1. Перейдите в Изменить > Project Настройки > Игрок.
    2. Разверните раздел Другие настройки
    3. Перейдите к Идентификация.
    4. Свойство Bundle Identifier является идентификатором приложения.
  • В файле списка свойств информации:
    1. В Finder перейдите к созданному приложению.
    2. Щелкните правой кнопкой мыши приложение и выберите Показать содержимое пакета.
    3. Перейти к Содержание и
    4. Открыть Info.plist.
    5. Ключ, представляющий идентификатор приложения, — это CFBundleIdentifier.

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

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

Создание прав

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

Чтобы установить права для приложения, выполните следующие действия.

  1. В том же каталоге, что и созданное приложение, создайте файл с тем же именем, что и приложение, с расширением .entitlements. Например, если вы назвали приложение MyProject, создайте файл с названием MyProject.entitlements.
  2. Откройте файл в текстовом редакторе и скопируйте в него следующее содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
       <key>com.apple.security.cs.disable-library-validation</key>
       <true/>
       <key>com.apple.security.cs.disable-executable-page-protection</key>
       <true/>
    </dict>
</plist>

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

Код подписи заявки

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

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

chmod -R a+xr "application_name.app"

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

codesign 
    --deep 
    --force 
    --verify 
    --verbose 
    --timestamp 
    --options runtime 
    --entitlements "application_name.entitlements" 
    --sign "Developer ID Application : XXX (YYY)" "application_name.app"

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

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

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

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

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

Дополнительные ресурсы