Файлы P12 и Mobileprovision простыми словами: сертификаты подписи для iPhone
Локальные подписчики вроде Feather и KSign перед установкой любого приложения запрашивают два файла: сертификат .p12 и профиль .mobileprovision. Многие получают эти файлы от других людей, не зная, что в них содержится и что может пойти не так. В этом руководстве объясняется, что из себя представляет каждый файл, как их проверить и какие риски с ними связаны, с опорой на официальную документацию Apple.
Сначала о рисках
- Файл .p12 содержит закрытый ключ. Тот, у кого есть этот файл и пароль к нему, может подписывать приложения от имени данного разработчика. Никогда не публикуйте его в открытом доступе и не отправляйте людям, которым не доверяете.
- Apple может отозвать любой сертификат. В документации Apple сказано, что компания «может отозвать цифровые сертификаты в любое время по своему усмотрению». Когда это происходит, приложения, подписанные этим сертификатом, перестают работать.
- Общие и купленные сертификаты отзывают чаще всего. Сертификат, которым пользуется множество незнакомых людей для публичного распространения, используется не по тем условиям, на которых он был выдан. Вы не можете контролировать, когда его отзовут, а уплаченные за него деньги, как правило, не возвращают. Подробнее: безопасность enterprise-сертификатов.
- Сертификат не проверяет само приложение. Подпись указывает, кто подписал приложение, а не то, безопасно ли оно. Проверяйте IPA-файлы самостоятельно: см. как сканировать IPA-файлы на вредоносный код.
Что такое файл .p12
Сам по себе сертификат подписи является открытым. Фактически подписывать приложения позволяет сертификат вместе с его закрытым ключом, который создаётся на Mac разработчика. В руководстве Apple по Keychain Access формат .p12 (Personal Information Exchange) описывается как файл, который «можно импортировать в качестве резервной копии вашего цифрового сертификата и закрытого ключа». При экспорте Keychain Access запрашивает пароль, и этот же пароль понадобится при повторном импорте. Именно поэтому для подписи приложений требуется файл .p12 и пароль к нему.
Apple выпускает разные типы сертификатов. Для установки на iPhone в обход App Store вам встретятся сертификаты разработки (development), сертификаты распространения (distribution) по платной подписке Apple Developer Program, а также внутрикорпоративные сертификаты распространения (in-house) по программе Apple Developer Enterprise Program.
Что такое файл .mobileprovision
Provisioning profile – это файл, подписанный Apple, который указывает, какие приложения могут запускаться, кем они подписаны, на каких устройствах и с какими разрешениями. В техническом примечании Apple TN3125 перечислено, что в нём содержится:
- DeveloperCertificates: сертификаты, которыми разрешено подписывать приложения, на которые распространяется профиль. Ваш .p12 должен соответствовать одному из них.
- App ID: большинство профилей действует для одного App ID. Wildcard App ID может охватывать сразу несколько приложений.
- Devices: в большинстве профилей перечислены конкретные устройства по UDID (ProvisionedDevices). В In-House (Enterprise) профилях вместо этого используется ProvisionsAllDevices, поэтому они работают на любом устройстве. См. как найти UDID вашего iPhone.
- ExpirationDate: у каждого профиля есть срок действия. После этой даты профиль становится недействительным.
- Entitlements: список разрешённых возможностей, таких как push-уведомления или app groups. Apple указывает, что каждое право (entitlement), которое заявляет приложение, должно присутствовать в списке разрешений профиля.
Apple также поясняет, что устройство проверяет подпись профиля, а затем проверяет, соответствует ли приложение критериям этого профиля. Если сертификат подписи приложения, App ID, устройство или права не совпадают, iOS не запустит приложение.
Как проверить файлы самостоятельно
- Внутри подписывающего приложения: Feather указывает “подробную информацию о приложениях и ваших сертификатах” среди своих функций, поэтому после импорта вы сможете увидеть там название, тип и срок действия.
- На Mac: в TN3125 от Apple показано, как расшифровать профиль в Terminal с помощью
security cms -D -i profile.mobileprovision. В выводе будут указаны ExpirationDate, список устройств или ProvisionsAllDevices, а также entitlements. - Проверьте соответствие пары: сертификат внутри .p12 должен быть одним из DeveloperCertificates профиля. Несовпадение – частая причина ошибки, которую подписывающее приложение показывает ещё до установки.
Частые проблемы с файлами сертификатов
- Неверный пароль: файл .p12 не импортируется. Пароль знает только тот, кто его экспортировал.
- Срок действия профиля истёк: приложения, подписанные с его помощью, перестают открываться после даты истечения. Вам нужен новый профиль, а затем повторная подпись приложений. См. как перeподписать файлы IPA.
- Устройство не указано в профиле: для профилей разработки и ad hoc ваш UDID должен быть в списке. Иначе установка завершится ошибкой, часто с сообщением “integrity could not be verified”: см. способы устранения ошибки integrity.
- Сертификат отозван: все приложения, подписанные им, сразу перестают работать, и никакие настройки на iPhone это не исправят. См. что делать после отзыва сертификата.
- Отсутствует entitlement: приложение, которому нужна функция, не разрешённая профилем, может установиться, но не работать в этой части, либо не установиться вовсе.
Чем здесь полезен Scarlet iOS
Scarlet не запрашивает у вас .p12 или профиль. Он подписывает приложения общим сертификатом вместо вашего Apple ID, поэтому настройка простая, но по этой же причине все приложения, установленные через него, перестают открываться, когда Apple отзывает этот сертификат. Работа Scarlet подтверждена на iOS с версии 14 по iOS 26; поддержка iOS 27 упоминается сторонними источниками, но официально не подтверждена. Если у вас есть собственный сертификат из Apple Developer Program, такой инструмент подписи, как Feather или KSign, использует его напрямую. О плюсах и минусах каждого подхода см. подпись на устройстве и подпись на компьютере.
Частые вопросы
Можно ли создать .p12 и профиль с бесплатным Apple ID?
Бесплатный Apple ID даёт вам персональный командный сертификат, которым управляют такие инструменты, как Xcode, Sideloadly и SideStore. Профили, полученные с его помощью, действуют 7 дней. Инструменты подписи, созданные для работы с файлами .p12, в основном предназначены для платных сертификатов разработчика.
Безопасно ли использовать сертификат, которым кто-то поделился в интернете?
Он работает до тех пор, пока его не отзовут, а это может произойти в любой момент без предупреждения. Кроме того, вы не можете знать, у кого ещё есть доступ к закрытому ключу. Относитесь к такому сертификату как к временному решению и никогда не подписывайте им ничего важного.
Решает ли новый профиль проблему отозванного сертификата?
Нет. Профиль указывает, какие сертификаты он разрешает. Если сертификат отозван, вам понадобится другой сертификат и профиль, который его включает.