Сначала проверьте на удалённом Mac подписывающую идентичность — сертификат вместе с соответствующим закрытым ключом, — затем профиль provisioning, Bundle ID и права команды. Если автоматическая подпись подходит проекту, передайте управление настройкой Xcode; не отзывайте сертификат, пока не выяснили, потерян ли ключ и действует ли сам сертификат.
Эта инструкция для разработчиков, которые уехали с MacBook Neo, подключились к удалённому Mac и не могут подписать сборку iOS в Xcode 27.
Она поможет отделить отсутствующие локальные ключи от несовпадения профиля, идентификатора приложения или разрешений команды.
Ошибка подписи Xcode 27 на удалённом Mac: сначала определите, какой ресурс недоступен
Сообщение об ошибке подписи не означает автоматически, что проблема в MacBook Neo, соединении или версии Xcode. Сборка может остановиться, если на удалённом Mac нет нужной идентичности, если профиль не подходит проекту или если у учётной записи недостаточно прав. Не меняйте настройки наугад: сначала выясните, какой из этих ресурсов фактически не найден или не подходит.
Apple описывает идентичность для подписи как сертификат и соответствующий ему закрытый ключ. Сертификат без этого ключа не даёт удалённому Mac возможности подписывать сборку от имени владельца идентичности. Это объясняет частую ситуацию после смены машины: в интерфейсе виден сертификат, но Xcode не может использовать его для подписи. См. описание устройства сертификатов и идентичностей для подписи.
Сопоставьте сбой с проверяемым объектом:
- Если нужная идентичность не отображается или не выбирается, проверьте связку сертификата и закрытого ключа в связке ключей удалённого Mac.
- Если идентичность доступна, но Xcode сообщает о неподходящем provisioning profile, проверьте его App ID, сертификат подписи и условия использования для сборки.
- Если команда или сертификат недоступны, проверьте Apple Account, выбранную команду в проекте и роль учётной записи.
Это разные ветви диагностики. Установка профиля не восстановит закрытый ключ. Повторный вход в учётную запись не выдаст автоматически недостающие полномочия. А отзыв действующего сертификата может затронуть других участников команды, поэтому это не первый шаг.
Первый этап: почему Xcode не видит прежний сертификат после перехода на удалённый Mac?
Подписывающая идентичность, находившаяся на прежнем компьютере, не становится доступной на новой машине только потому, что в Xcode выполнен вход в тот же Apple Account. Проверьте связку ключей именно на удалённом Mac. Удалённая рабочая сессия и локальная система MacBook Neo — разные среды; локально сохранённый ключ не следует считать установленным на удалённой машине.
В Xcode проверьте, какой Apple Account добавлен в настройки учётных записей и какая команда выбрана для целевого приложения. Затем откройте проект и сверьте команду в настройках цели. Убедитесь, что выбранная команда соответствует приложению, а не другой организации или личной команде. Вход подтверждает доступ к учётной записи, но сам по себе не доказывает, что у неё есть полномочия создавать или использовать нужные сертификаты. Для проверки ориентируйтесь на таблицу ролей и доступных действий в программе разработчиков.
Отдельно выясните, какой сертификат ожидает сборка. Сертификаты разработки и распространения предназначены для разных задач; наличие одного не означает, что проект сможет выполнить операцию, для которой требуется другой. В обзоре сертификатов Apple описаны категории и область применения. Сопоставляйте назначение сертификата с целью сборки, а не только с его отображаемым именем.
Если Xcode не видит нужную идентичность, проверьте в связке ключей удалённого Mac наличие сертификата и парного закрытого ключа. Не копируйте ключи в текст сборочного лога, сообщения команды или случайный каталог проекта. Если ключ должен быть предоставлен участником команды, согласуйте перенос напрямую с уполномоченным владельцем и применяйте защищённый экспорт с паролем. Не передавайте экспортный пароль тем же каналом, что и файл.
Второй этап: сертификат виден, но закрытого ключа нет
Если в связке ключей присутствует сертификат, но под ним отсутствует соответствующий закрытый ключ, одним повторным скачиванием сертификата проблему обычно не решить: для подписи требуется именно пара. Сначала выясните, сохранился ли исходный ключ на прежнем Mac или у уполномоченного участника команды. Если он доступен, согласуйте безопасный экспорт идентичности и импорт в связку ключей удалённой машины. Документ Apple о совместном управлении сертификатами команд в Xcode описывает управление такими ресурсами и синхронизацию в командном процессе.
При экспорте проверьте, что переносится именно идентичность с закрытым ключом, а не один сертификат. Защитите экспорт паролем и не храните файл дольше, чем необходимо. После импорта удалите временную копию безопасным способом, согласованным с вашей политикой хранения. Не публикуйте ключ, пароль или данные клиента в журнале сборки, общей папке без контроля доступа и тикете поддержки.
Если исходный ключ утрачен, остановитесь до любых действий в кабинете команды. Уточните у ответственного администратора, можно ли создать новую идентичность и как изменение повлияет на других разработчиков и текущие сборки. Отзыв сертификата может лишить доступности идентичность, которой пользуются другие участники. Перевыпуск оправдан только после проверки владельца, области использования и последствий. Само наличие проблемы на удалённой машине не доказывает, что сертификат нужно отзывать.
Третий этап: проверьте App ID, Bundle ID и профиль provisioning
Профиль provisioning связывает настройки приложения с условиями подписи и распространения. Поэтому проверяйте не только срок его действия или факт установки. Сверьте Bundle ID проекта с App ID, к которому относится профиль; затем убедитесь, что профиль допускает используемый сертификат и подходит для нужного сценария запуска или распространения.
Если для приложения требуется конкретная возможность, проверьте, что она включена для соответствующего App ID и учтена в конфигурации подписи. Apple отдельно описывает регистрацию App ID и настройку возможностей App ID. Несовпадение возможностей может выглядеть как проблема подписи, хотя причина находится в настройке идентификатора или профиля.
Для автоматической подписи проверьте, может ли Xcode управлять профилем и другими ресурсами от имени выбранной команды. Для ручной подписи сверяйте назначенный профиль с реальным Bundle ID, сертификатом и целью сборки. Профиль, оставшийся от прежней конфигурации проекта, может не подходить после изменения идентификатора или возможностей. В таком случае не редактируйте все параметры подряд: сначала определите, что именно изменилось и кто вправе обновить профиль.
Если соответствие не восстановить локальной настройкой, уполномоченный участник может проверить профиль в кабинете команды и при необходимости обновить или скачать его заново. Инструкция Apple по редактированию, скачиванию и удалению профилей показывает доступные действия. Удаление старого профиля не должно быть автоматической реакцией на любую ошибку: сначала выясните, не использует ли его другая конфигурация.
Для проверки используйте список ниже. Отмечайте пункт только после проверки на удалённом Mac или в настройках проекта, а не на основании того, что всё работало на прежнем компьютере.
- [ ] В Xcode выбран Apple Account, которому разрешена работа с нужной командой.
- [ ] В настройках цели проекта выбрана та же команда, что и для целевого приложения.
- [ ] На удалённом Mac доступна нужная идентичность, состоящая из сертификата и соответствующего закрытого ключа.
- [ ] Назначение сертификата соответствует текущей задаче — разработке или распространению.
- [ ] Bundle ID проекта совпадает с App ID, для которого подготовлен профиль.
- [ ] Профиль подходит используемому сертификату и требуемым возможностям приложения.
- [ ] Известно, кто уполномочен экспортировать ключ, менять профиль или создавать новую идентичность.
- [ ] Перед проверочной сборкой исключены из логов и рабочих каталогов закрытые ключи, пароли и клиентские данные.
Когда автоматическая подпись не подходит и что проверить вручную
Автоматическая подпись и ручной выбор профиля решают одну задачу разными способами. При автоматической подписи Xcode управляет необходимыми ресурсами в рамках доступных прав команды. При ручной настройке разработчик сам отвечает за выбор соответствующего профиля и согласованность параметров проекта. Не переключайтесь между режимами исключительно ради исчезновения сообщения: сначала определите, кому в проекте положено управлять этими ресурсами.
| Режим | Что проверять в первую очередь | Когда уместен | Основной риск |
|---|---|---|---|
| Автоматическая подпись | Apple Account, команда, Bundle ID, доступ Xcode к управлению ресурсами | Команда разрешает Xcode управлять настройками подписи | Недостаточные права могут помешать созданию или обновлению ресурса |
| Ручная подпись | Выбранный профиль, сертификат, Bundle ID и возможности приложения | Профили и изменения управляются по процедуре команды | Устаревший или неподходящий профиль останется выбранным вручную |
Чтобы понять, что именно настроено в проекте, проверьте настройки подписи цели и значения параметров сборки. Apple публикует справочник параметров сборки Xcode; используйте его для сверки названий и назначения параметров, а не для копирования значений из чужого проекта. При ручной подписи зафиксируйте, какой профиль назначен целевой конфигурации, и проверьте соответствие каждому целевому приложению проекта.
Права команды проверяйте до попытки обойти ограничения настройкой профиля. Если учётная запись может просматривать проект, это ещё не подтверждает, что она может управлять сертификатами или профилями. Попросите администратора команды подтвердить разрешённый процесс. Для приложений клиентов это особенно важно: личная копия ключа не должна становиться способом обхода утверждённой процедуры организации.
Четвёртый этап: повторно соберите и проверьте результат
После исправления повторите ту же операцию, которая завершалась ошибкой. Не ограничивайтесь тем, что интерфейс Xcode показывает выбранный профиль: успешный выбор в настройках не подтверждает, что сборка реально использовала ожидаемую идентичность. Зафиксируйте конфигурацию проекта, целевое приложение и тип операции, чтобы команда могла сопоставить результат с предыдущей ошибкой.
Затем проверьте, прошла ли сборка и соответствует ли фактически использованная подпись ожидаемому сертификату и профилю. Если результат предназначен для тестирования, выполните именно предусмотренный проектом тестовый сценарий. Если нужна архивная сборка, повторите архивирование с нужной конфигурацией. Не считайте одну локально успешную сборку доказательством готовности к распространению: требования зависят от цели и настроек приложения.
Если сбой повторился, вернитесь к конкретной ветви: идентичность и ключ; профиль и Bundle ID; возможности; права. Сравните, какое состояние изменилось после ремонта. Не отзывайте сертификат и не удаляйте профили «для чистоты», если нет установленной причины и разрешения владельца команды.
| Наблюдение после повторной сборки | Вероятная область проверки | Следующее действие |
|---|---|---|
| Нужная идентичность недоступна | Связка ключей, закрытый ключ, назначение сертификата | Подтвердить наличие пары и право на безопасный импорт |
| Идентичность доступна, профиль не подходит | Bundle ID, App ID, сертификат, возможности | Сопоставить параметры и согласовать обновление профиля |
| Ресурсы выглядят корректно, но операция запрещена | Apple Account и роль в команде | Запросить проверку у администратора, не обходить ограничения |
| Сборка успешна, но не проходит целевой тест | Конфигурация сборки и фактический сценарий использования | Повторить нужный тест и проверить выбранную конфигурацию |
При работе с клиентским проектом храните идентичности в рамках утверждённого процесса клиента. Защитные правила важны и при удалённом доступе: изучите описание мер безопасности MergeMac, но не воспринимайте их как замену внутренним правилам вашей команды. Если требуется проверить условия работы с удалённой машиной, сначала уточните доступные варианты в справке MergeMac.
Выбирайте удалённую среду после проверки требований проекта
Подключение с MacBook Neo может быть удобным способом добраться до рабочей среды, но оно не переносит автоматически ключи, сертификаты и командные разрешения. Перед использованием удалённого Mac проверьте, что его доступная среда подходит вашему проекту, а команда разрешает выбранный способ хранения и импорта подписывающих ресурсов. Требования к macOS и Xcode, а также возможность работы с конкретной конфигурацией нужно сверять с фактическими условиями услуги и правилами команды; здесь мы не предполагаем заранее установленную версию или гарантированную совместимость.
| Подход | Преимущества | Ограничения |
|---|---|---|
| Подписывать на прежнем Mac | Если нужный ключ уже доступен и процесс проверен, меньше изменений в хранении идентичности | Нужно иметь доступ к прежней машине и поддерживать её готовность |
| Настроить подпись на удалённом Mac | Можно продолжить сборку из удалённой среды, если проект и командная политика это допускают | Необходимы безопасный перенос ключа или согласованное управление профилем и достаточные права |
| Передать управление ресурсами администратору команды | Сохраняется централизованный порядок для сертификатов и профилей | Изменения зависят от полномочий и процесса команды |
Если проблема вызвана ключом, которого нет на удалённом Mac, аренда машины сама по себе его не восстановит и не гарантирует успешную подпись. Но когда требуется временная удалённая среда для продолжения iOS-разработки, сборки или проверки проекта, можно сопоставить фактические условия проекта с доступными планами Mac MergeMac. Это не заменяет согласование сертификатов с командой: до переноса закрытого ключа подтвердите, что такой способ разрешён и защищён.
Проверьте подпись в удалённой среде MergeMac
MergeMac предоставляет выделенный физический Mac mini для проверки сборок и настройки подписи в отдельной среде.
