Перейти к содержанию
Innovialabs

Подпись приложений: сертификаты iOS, профили и ключи Android

Основы4 мин

Коротко

Подпись доказывает, что обновление выпустил тот же владелец; в iOS ей управляет Apple через сертификаты и профили, в Android главное — не потерять upload key и хранить все ключи на аккаунтах компании, а не подрядчика.

Зачем приложение подписывают

Подпись — это криптографическое доказательство того, кто собрал приложение и что его не изменили после сборки. Магазин и операционная система проверяют её при каждой загрузке и установке.

На практике это значит три вещи:

  • обновление примут, только если оно подписано тем же владельцем, что и предыдущая версия;
  • никто посторонний не сможет выпустить «обновление» вашего приложения;
  • доступ к сервисам (push-уведомления, вход через Google, карты) часто привязан к конкретной подписи.

Поэтому ключи подписи — такой же актив бизнеса, как домен или аккаунт в банке.

Как это устроено в iOS

В экосистеме Apple подпись состоит из нескольких частей, которые выдаются через Apple Developer Program:

ЭлементЧто этоЗачем нужен
СертификатПара «приватный ключ + сертификат от Apple»Подтверждает, что сборку подписал участник вашей команды
App ID / Bundle IDУникальный идентификатор приложенияСвязывает подпись, push и другие возможности с конкретным приложением
Provisioning profileФайл, который связывает сертификат, App ID и (для тестов) список устройствРазрешает установку сборки в нужном режиме

Профили бывают разных типов: для разработки, для установки на ограниченный список устройств (ad hoc), для App Store и TestFlight. У сертификатов и профилей есть срок действия — его нужно продлевать.

Важная деталь: приложения в App Store дополнительно переподписывает сама Apple. Поэтому если сертификат дистрибуции истёк или был отозван, опубликованное приложение у пользователей продолжит работать — вы просто создадите новый сертификат для следующих сборок. Хуже с корпоративными и ad hoc-сборками: там истечение профиля может остановить запуск у сотрудников.

Отдельно стоит беречь ключ для push-уведомлений (APNs, файл .p8): Apple даёт скачать его только один раз.

Как это устроено в Android

В Google Play сегодня используется схема Play App Signing с двумя ключами:

  • App signing key — главный ключ, которым подписывается то, что получают пользователи. Его хранит Google.
  • Upload key — ключ, которым команда подписывает сборку (AAB) перед загрузкой в Play Console. Он у вас.

Создать upload key можно стандартной утилитой keytool из JDK:

keytool -genkeypair -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

Файл keystore, его пароль, alias и пароль ключа — это четыре вещи, которые нужно сохранить вместе.

Что будет, если потерять ключ

СитуацияПоследствия
Потерян iOS-сертификатОтзываете старый, выпускаете новый. Пользователи ничего не заметят
Потерян upload key Android при Play App SigningВладелец аккаунта запрашивает сброс upload key в Play Console. Неприятно, но решаемо
Потерян ключ Android без Play App Signing (старые приложения)Обновить приложение нельзя. Придётся выпускать новое под другим package name и заново собирать аудиторию
Потерян доступ к аккаунту разработчикаСамый тяжёлый случай: без аккаунта не помогут никакие ключи

Кто должен держать ключи

Правило простое: всё принадлежит компании-владельцу приложения, а подрядчик получает доступ.

  • Аккаунты Apple Developer и Google Play Console регистрируются на компанию, подрядчик добавляется как участник команды с нужной ролью.
  • Keystore и пароли лежат в корпоративном менеджере паролей или хранилище секретов, плюс резервная копия в отдельном месте.
  • В CI/CD ключи передаются через защищённые секреты, а не хранятся в репозитории.
  • При смене подрядчика роли отзываются, ключи остаются у вас.

Частые ошибки

  • Keystore коммитят в Git вместе с паролями в открытом виде.
  • Ключи есть только на ноутбуке одного разработчика.
  • Аккаунт в магазине зарегистрирован на личную почту фрилансера.
  • В Firebase, Google Maps или Google Sign-In прописывают отпечаток upload key вместо app signing key — и в релизе вход или карты перестают работать. Отпечаток app signing key есть в Play Console.

Частые вопросы

Да, создать новый сертификат и обновить профили перед следующей сборкой. Уже опубликованное в App Store приложение продолжит работать, но выпустить обновление со старым сертификатом не получится.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

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

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

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.