Есть ли опыт работы с сертификатами Apple
Что проверяют
У фронтендера этот вопрос возникает, когда рядом есть мобильная сборка на React Native, Capacitor или Expo, либо веб-фичи Apple вроде Apple Pay на сайте и Sign in with Apple. Интервьюер хочет понять, сможете ли вы сами собрать и выложить приложение или починить подпись, не дёргая iOS-разработчика. Следом спросят, что делать, если сертификат истёк.
Как отвечать
Покажите, что понимаете цепочку подписи:
- сертификат: Apple Development или Apple Distribution. Сам по себе бесполезен без закрытого ключа, который остался на машине, где создавали запрос. Переносят их парой в файле
.p12; - App ID и entitlements: идентификатор приложения и включённые возможности (push, Sign in with Apple, App Groups);
- provisioning profile: связывает сертификат, App ID, а для разработки ещё и список устройств. Без подходящего профиля Xcode сборку не подпишет;
- ключи
.p8: для APNs и Sign in with Apple удобнее ключ, чем сертификат, у ключа нет срока годности.
Инструменты: автоматическое управление подписью в Xcode, fastlane match для хранения сертификатов команды в зашифрованном репозитории, EAS Build в Expo, который сам создаёт и хранит учётные данные. Для Apple Pay в вебе нужны Merchant ID, сертификат Merchant Identity и файл подтверждения домена в /.well-known/.
Рассказ стройте на своём примере: что собирали, где хранили сертификаты, какая была проблема и как нашли причину. Если опыта нет, скажите прямо: «Подписью занимался iOS-разработчик, я работал с веб-частью. Схему понимаю: сертификат с ключом, App ID, профиль. Разберусь быстро». Это лучше выдуманной истории, которая развалится на втором вопросе.
Где спотыкаются
Думают, что достаточно скачать сертификат из портала. Без закрытого ключа на новой машине подпись не заработает.
Пугаются истёкшего сертификата распространения. Опубликованные в App Store приложения продолжат работать, нужно выпустить новый сертификат и профиль для следующих сборок. Иначе с enterprise-распространением: там с истёкшим сертификатом установленные приложения перестают запускаться.
Хранят .p12 и пароли открытым текстом в репозитории или в почте, а не в секретах CI или в match с шифрованием.