Apple Certificate — что это такое, какие бывают типы и как работает

Автор: IT Sectr Опубликовано: 2026-04-16 Время чтения: 9 мин

Apple Certificate — это цифровой документ, выпущенный Apple Developer Portal для подписи кода приложений под iOS, iPadOS, macOS, tvOS и watchOS. По данным Apple Developer Support, 2026, сертификаты являются частью инфраструктуры открытых ключей (PKI) и необходимы для подтверждения личности разработчика. В статье разберём типы сертификатов, процесс их создания и управления.

Главное

  • Apple Certificate — цифровой сертификат, удостоверяющий личность разработчика при подписи кода
  • Development сертификат позволяет запускать приложения на физических устройствах в процессе разработки
  • Distribution сертификат необходим для публикации в App Store или Ad Hoc распространения
  • Push Notification сертификаты используются для подписи соединения с APNs и доставки уведомлений
  • Закрытый ключ сертификата хранится в Keychain разработчика и не должен передаваться третьим лицам

Что такое Apple Certificate

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

Цепочка доверия гарантирует, что сертификат разработчика действительно выпущен Apple. iOS проверяет: корневой сертификат Apple Root CA (встроен в прошивку), промежуточный сертификат Apple Worldwide Developer Relations CA, сертификат разработчика. Если любой из элементов цепочки отсутствует или недействителен, iOS блокирует запуск приложения с ошибкой code signing. macOS предоставляет утилиту security для проверки цепочки доверия любого сертификата в связке ключей.

Как работают сертификаты Apple

Процесс подписи кода с использованием 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 и Distribution сертификатами

Development сертификат позволяет подписывать приложения для запуска на физических устройствах разработчика. Для его получения достаточно бесплатного аккаунта Apple ID — Xcode может сгенерировать Development сертификат автоматически. Distribution сертификат выпускается только для платных аккаунтов Apple Developer Program ($99/год) и требуется для отправки приложения в App Store, Ad Hoc распространения или Enterprise-дистрибуции. Один аккаунт может иметь несколько Distribution сертификатов — например, отдельный для каждого приложения или для разных команд.

Типы Apple Certificate

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 Hoc1 год
Mac DevelopmentПодпись macOS-приложений для разработки1 год
Mac DistributionПубликация в Mac App Store1 год
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 и экспорт сертификатов

Keychain (связка ключей) — системное хранилище macOS для сертификатов, закрытых ключей и паролей. Все сертификаты Apple и соответствующие закрытые ключи хранятся в связке логина (login.keychain) пользователя. Xcode обращается к Keychain при подписи кода, автоматически выбирая подходящий сертификат по типу сборки. Для диагностики проблем с подписью удобно использовать встроенную утилиту Keychain Access (папка /Applications/Utilities).

Экспорт сертификата для CI/CD выполняется через Keychain Access: выберите сертификат и соответствующий закрытый ключ (они должны быть развёрнуты в одной строке), нажмите правой кнопкой и выберите Export. Формат — PKCS12 (.p12). При экспорте Keychain запросит пароль для защиты файла — этот пароль потребуется при импорте на CI-сервере. Без закрытого ключа экспортированный сертификат бесполезен для подписи — он может использоваться только для проверки уже подписанного кода.

Импорт сертификата в CI/CD

Пример команды для импорта сертификата в связку ключей CI-агента с использованием security утилиты:

bash
# Создание временной связки ключей
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 для автоматического создания и обновления сертификатов.

Часто задаваемые вопросы

Можно ли использовать один Apple Certificate для iOS и macOS приложений?

Нет, для 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 аккаунте?

Для одного аккаунта 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 ID на существующие сертификаты?

Да, сертификаты привязаны к конкретному Apple Developer аккаунту (Team ID). При смене аккаунта старые сертификаты становятся недействительными для нового Team ID. Xcode при смене аккаунта в Accounts Preferences автоматически запрашивает создание новых сертификатов для новой команды.

Итоги

  • Apple Certificate — цифровой сертификат X.509, выпущенный Apple CA для подтверждения личности разработчика при подписи кода
  • Development сертификат позволяет запускать приложения на физических устройствах без публикации в App Store
  • Distribution сертификат требуется для загрузки приложения в App Store и Ad Hoc распространения
  • APNs сертификаты или токены необходимы для доставки push-уведомлений через серверы Apple
  • Закрытый ключ хранится в Keychain разработчика и не может быть восстановлен при утере — требуется отзыв сертификата
  • PKCS12 экспорт используется для передачи сертификата между компьютерами и в CI/CD-системы
  • Цепочка доверия Apple включает корневой, промежуточный и сертификат разработчика — нарушение любого звена блокирует подпись

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также