Apple Certificate — это цифровой документ, выпущенный Apple Developer Portal для подписи кода приложений под iOS, iPadOS, macOS, tvOS и watchOS. По данным Apple Developer Support, 2026, сертификаты являются частью инфраструктуры открытых ключей (PKI) и необходимы для подтверждения личности разработчика. В статье разберём типы сертификатов, процесс их создания и управления.
Главное
Apple Certificate — это криптографический сертификат формата X.509, выпущенный центром сертификации Apple (Apple Certificate Authority). Он подтверждает, что его владелец является зарегистрированным участником Apple Developer Program и имеет право подписывать приложения для экосистемы Apple. Сертификат состоит из открытого ключа, метаданных владельца и цифровой подписи Apple CA — любой может проверить подлинность сертификата, используя корневой сертификат Apple, встроенный в операционную систему.
Архитектура PKI Apple включает три уровня: корневой сертификат Apple (Apple Root CA), промежуточный сертификат (Apple Worldwide Developer Relations CA) и сертификат разработчика. Apple Worldwide Developer Relations CA подписывает все сертификаты разработчиков — если этот промежуточный сертификат отсутствует в цепочке доверия, подпись кода считается недействительной. Корневые сертификаты Apple обновляются автоматически через механизм Apple Trust Store, встроенный в iOS и macOS.
Каждый сертификат имеет срок действия — от одного года до трёх лет, в зависимости от типа. Apple Developer Program автоматически уведомляет разработчика за 30 дней до истечения сертификата через email и push-уведомления. После истечения старый сертификат нельзя использовать для подписи новых билдов — требуется выпустить новый, при этом приложения, подписанные истёкшим сертификатом, продолжают работать на устройствах пользователей.
Цепочка доверия гарантирует, что сертификат разработчика действительно выпущен Apple. iOS проверяет: корневой сертификат Apple Root CA (встроен в прошивку), промежуточный сертификат Apple Worldwide Developer Relations CA, сертификат разработчика. Если любой из элементов цепочки отсутствует или недействителен, iOS блокирует запуск приложения с ошибкой code signing. macOS предоставляет утилиту security для проверки цепочки доверия любого сертификата в связке ключей.
Процесс подписи кода с использованием Apple Certificate основан на асимметричной криптографии. Закрытый ключ (private key) хранится на компьютере разработчика в Keychain, а открытый ключ (public key) включается в сертификат и отправляется в Apple Developer Portal. Когда Xcode подписывает приложение, он создаёт дайджест (хэш) бинарного файла и шифрует его закрытым ключом — это цифровая подпись. Устройство расшифровывает подпись открытым ключом из сертификата и сравнивает с вычисленным хэшем.
Apple использует алгоритм ECDSA (Elliptic Curve Digital Signature Algorithm) с кривой P-256 для всех сертификатов, выпущенных после 2021 года. Ранее использовался RSA-2048. Переход на ECDSA повысил скорость проверки подписи на устройствах и уменьшил размер подписи — для мобильных приложений это особенно важно, так как проверка подписи выполняется при каждом запуске. По данным Apple Security Engineering (2025), ECDSA P-256 обеспечивает эквивалентный RSA-2048 уровень безопасности при значительно меньших вычислительных затратах.
Для CI/CD-процессов сертификат вместе с закрытым ключом необходимо экспортировать в PKCS12 (.p12) и хранить в защищённом хранилище. GitHub Actions, Bitrise, Jenkins и другие CI-системы поддерживают импорт сертификатов через переменные окружения или секреты. После импорта на CI-агент сертификат временно добавляется в связку ключей, используется для подписи и удаляется. Fastlane Match автоматизирует этот процесс, синхронизируя сертификаты между разработчиками через зашифрованный git-репозиторий.
Development сертификат позволяет подписывать приложения для запуска на физических устройствах разработчика. Для его получения достаточно бесплатного аккаунта Apple ID — Xcode может сгенерировать Development сертификат автоматически. Distribution сертификат выпускается только для платных аккаунтов Apple Developer Program ($99/год) и требуется для отправки приложения в App Store, Ad Hoc распространения или Enterprise-дистрибуции. Один аккаунт может иметь несколько Distribution сертификатов — например, отдельный для каждого приложения или для разных команд.
Apple Developer Portal предоставляет несколько типов сертификатов, каждый из которых предназначен для определённой задачи. iOS App Development — базовый сертификат для подписи приложений на этапе разработки. Apple Distribution — основной сертификат для публикации в App Store. Mac Development и Mac Distribution — аналоги для macOS-приложений. Для каждого типа сертификата существует отдельный запрос (CSR) в Apple Developer Portal.
Отдельную категорию составляют сертификаты для push-уведомлений. Apple Push Notification service (APNs) требует либо отдельного SSL-сертификата, либо использования токенов аутентификации (APNs Auth Key). SSL-сертификаты APNs выпускаются отдельно для Development (Sandbox) и Production сред и привязываются к конкретному App ID. APNs Auth Key — более современный подход: один ключ (.p8) обслуживает все приложения аккаунта, что упрощает управление.
| Тип сертификата | Назначение | Срок действия |
|---|---|---|
| iOS App Development | Подпись для тестирования на устройствах | 1 год |
| Apple Distribution | Публикация в App Store и Ad Hoc | 1 год |
| Mac Development | Подпись macOS-приложений для разработки | 1 год |
| Mac Distribution | Публикация в Mac App Store | 1 год |
| APNs SSL (Sandbox) | Push-уведомления в тестовой среде | 1-3 года |
| APNs SSL (Production) | Push-уведомления в продакшне | 1-3 года |
Создание Apple Certificate начинается с генерации запроса на сертификат (Certificate Signing Request, CSR) через Keychain Access на macOS. Keychain Access создаёт пару ключей: закрытый ключ остаётся в связке, а CSR отправляется в Apple Developer Portal. После верификации личности Apple подписывает CSR и выдаёт готовый сертификат (.cer), который нужно скачать и установить двойным кликом.
Для управления несколькими проектами и командами Apple предоставляет возможность создавать сертификаты для разных Team ID. Один разработчик может быть участником нескольких команд (через Apple Developer Program — App Store Connect), и для каждой команды выпускаются отдельные сертификаты. Xcode автоматически переключает сертификаты в зависимости от выбранной команды в настройках Signing & Capabilities.
Ревокация (отзыв) сертификата — критическая операция: все приложения, подписанные этим сертификатом, перестают устанавливаться на новые устройства (уже установленные продолжают работать). Apple Developer Portal позволяет отозвать любой сертификат в разделе Certificates. Причины ревокации: компрометация закрытого ключа, увольнение разработчика из команды, нарушение условий Apple Developer Program. После ревокации необходимо выпустить новый сертификат и переподписать все активные билды.
Keychain (связка ключей) — системное хранилище macOS для сертификатов, закрытых ключей и паролей. Все сертификаты Apple и соответствующие закрытые ключи хранятся в связке логина (login.keychain) пользователя. Xcode обращается к Keychain при подписи кода, автоматически выбирая подходящий сертификат по типу сборки. Для диагностики проблем с подписью удобно использовать встроенную утилиту Keychain Access (папка /Applications/Utilities).
Экспорт сертификата для CI/CD выполняется через Keychain Access: выберите сертификат и соответствующий закрытый ключ (они должны быть развёрнуты в одной строке), нажмите правой кнопкой и выберите Export. Формат — PKCS12 (.p12). При экспорте Keychain запросит пароль для защиты файла — этот пароль потребуется при импорте на CI-сервере. Без закрытого ключа экспортированный сертификат бесполезен для подписи — он может использоваться только для проверки уже подписанного кода.
Пример команды для импорта сертификата в связку ключей CI-агента с использованием security утилиты:
# Создание временной связки ключей
security create-keychain -p "temp" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "temp" build.keychain
# Импорт сертификата из .p12
security import certificate.p12 -k build.keychain \
-P "${P12_PASSWORD}" -T /usr/bin/codesign
# Настройка политики подписи
security set-key-partition-list -S apple: -s \
-k "temp" build.keychain
Security create-keychain создаёт временную связку ключей, изолированную от пользовательской. Это важно для CI, чтобы не загрязнять системную связку ключей агента. Флаг -T /usr/bin/codesign разрешает утилите codesign доступ к ключам без запроса пароля — иначе автоматическая подпись в пайплайне прервётся диалогом. Команда set-key-partition-list необходима для совместимости с требованиями macOS к подписи кода в автоматическом режиме.
Наиболее распространённая ошибка — "No signing certificate found" при сборке в Xcode. Возникает, когда в Keychain отсутствует сертификат с закрытым ключом, соответствующий выбранному типу сборки. Решение: проверить Keychain Access на наличие сертификата, скачать его из Apple Developer Portal и установить. Если закрытый ключ утерян (старый компьютер, переустановка системы), необходимо отозвать старый сертификат и выпустить новый.
Ошибка "Valid signing certificate not found" в CI/CD возникает, если на агенте не установлены промежуточные сертификаты Apple (Apple Worldwide Developer Relations CA). Apple включает промежуточные сертификаты в цепочку при скачивании сертификата разработчика, но при ручном экспорте .p12 они могут отсутствовать. Решение — скачать промежуточные сертификаты с сайта Apple Certificate Authority и установить их в связку ключей CI-агента.
Проблема с истекшим сертификатом проявляется ошибкой "This certificate has an invalid issuer" при подписи. Apple Developer Portal показывает статус каждого сертификата и дату истечения. Если приложение уже опубликовано в App Store с истекшим сертификатом, оно продолжает работать — App Store использует собственный сертификат Apple для распространения. Однако для загрузки нового билда потребуется действующий Distribution сертификат. Fastlane включает команду cert для автоматического создания и обновления сертификатов.
Часто задаваемые вопросы
Нет, для iOS и macOS выпускаются разные типы сертификатов — iOS App Development и Mac Development. Apple Distribution сертификат также разделён по платформам. При создании сертификата в Apple Developer Portal необходимо указать целевую платформу — универсального сертификата для всех платформ не существует.
Необходимо отозвать старый сертификат в Apple Developer Portal через Certificates, Identifiers & Profiles. Затем создать новый CSR через Keychain Access и выпустить новый сертификат. Все приложения, подписанные старым сертификатом, потребуют переподписи и повторной загрузки в App Store, если нужно выпустить обновление.
Для одного аккаунта Apple Developer Program допускается не более двух Distribution сертификатов и неограниченного количества Development сертификатов одновременно. Enterprise аккаунты имеют отдельные лимиты. Если достигнут лимит Distribution сертификатов, необходимо отозвать один из существующих перед созданием нового.
Используйте утилиту security: security find-identity -v -p basic перечислит все сертификаты в связке ключей с датами истечения. Для конкретного сертификата укажите его SHA-1 хэш: security find-certificate -c "Developer" -p | openssl x509 -noout -enddate.
Да, сертификаты привязаны к конкретному Apple Developer аккаунту (Team ID). При смене аккаунта старые сертификаты становятся недействительными для нового Team ID. Xcode при смене аккаунта в Accounts Preferences автоматически запрашивает создание новых сертификатов для новой команды.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также