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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.