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 дни преди изтичане на сертификата чрез имейл и 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 подписва приложение, той създава резюме (hash) на двоичния файл и го криптира с частния ключ — това е цифровият подпис. Устройството декриптира подписа с публичния ключ от сертификата и го сравнява с изчисления hash.
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 достъп до ключовете без искане на парола — в противен случай автоматичното подписване в pipeline ще бъде прекъснато от диалогов прозорец. Командата 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 hash: security find-certificate -c „Developer“ -p | openssl x509 -noout -enddate.
Да, сертификатите са обвързани с конкретен Apple Developer акаунт (Team ID). При смяна на акаунт старите сертификати стават невалидни за новия Team ID. Xcode при смяна на акаунт в Accounts Preferences автоматично изисква създаване на нови сертификати за новия екип.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също