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 дни преди изтичане на сертификата чрез имейл и 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 подписва приложение, той създава резюме (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 и 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 достъп до ключовете без искане на парола — в противен случай автоматичното подписване в 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 за автоматично създаване и подновяване на сертификати.

Често задавани въпроси

Може ли един 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 hash: 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също