Что означает ошибка CERT_EXPIRED
Вы столкнулись с сообщением «Your credentials are expired» или Xcode отказывается подписывать бинарный файл, потому что привязанный сертификат CERT_EXPIRED закончился. Такое происходит, когда срок действия сертификата разработчика или производительности, привязанного к проекту, прошёл, и система блокирует сборку, чтобы защитить пользователей от подписанных устаревшими ключами приложений.
Причины возникновения
- Ежегодное обновление не выполнено – сертификаты Apple действуют 1 год; пропуск продления приводит к истечению срока.
- Смена устройств разработки – после обновления macOS или iOS старый сертификат может перестать соответствовать требованиям.
- Использование старого сертификата после обновления Xcode – новая версия Xcode может автоматически отозвать устаревшие сертификаты.
- Человеческий фактор – легко забыть о напоминании, особенно при интенсивной разработке.
Способы решения
Способ 1: Обновить существующий сертификат
- Экспортируйте просроченный сертификат
- В Xcode откройте Установки профиля → Сертификаты.
- Щёлкните правой кнопкой мыши по истёкшему сертификату → Экспортировать....
- Сохраните файл как
expired.cer.
- Продлите сертификат в Apple Developer
- Перейдите на страницу Certificates.
- Найдите продленный сертификат, нажмите Download.
- В Xcode перейдите в Установки профиля → Сертификаты → Import и выберите новый файл.
- Обновите связанные профили и ключи
- Вернитесь в Установки профиля, найдите профиль, привязанный к сертификату.
- Нажмите Update, чтобы связать новый сертификат.
⚠️ Важно: После обновления убедитесь, что все связанные профили и ключи также актуальны; иначе сборка всё равно будет заблокирована.
Способ 2: Создать новый сертификат и заменить старый
- Сгенерируйте новый сертификат разработчика
- В Apple Developer нажмите Certificates → Add + → Apple Development.
- Следуйте инструкциям: выберите тип ключа (
RSA), укажите срок действия (минимум 1 год) и сохраните файл (.cer) и приватный ключ (.pem).
- Удалите старый сертификат из Xcode
- В Установки профиля → Сертификаты выделите просроченный сертификат и нажмите ‑.
- Импортируйте новый сертификат
- Нажмите Import, выберите новый файл
certificate.cer.
- Нажмите Import, выберите новый файл
- Обновите профиль и ключ
- Найдите профиль, который использовал старый сертификат, и обновите его аналогично способу 1.
Способ 3: Временный обходной путь (только для отладки)
💡 Совет: Это решение снижает безопасность и подходит только для локального тестирования.
- Отключите проверку сертификатов на устройстве
- В настройках устройства перейдите в Профили и устройство управления → найдите профиль с истёкшим сертификатом → Удалить. Это временно отключает проверку.
- Используйте флаг
--disable-certificate-checks(если вы запускаете тесты из командной строки)xcodebuild -project MyApp.xcodeproj -scheme MyApp -destination 'id=12345ABC' \ -disable-certificate-checks build - Не забудьте восстановить правильный сертификат после завершения отладки.
Профилактика
- Настройте напоминания о скором истечении срока действия сертификатов (Apple рассылает уведомления, но до этого можете использовать календарь).
- Автоматизируйте обновление с помощью скриптов, например:
# Пример скрипта (псевдо-код) security find-certificate -i -p -s /path/to/old.cer # Замените старый сертификат новым через API Apple - Ведите журнал сроков действия всех сертификатов в таблице или сервисе-менеджере, чтобы видеть графики обновлений.
- Следите за обновлениями Xcode – новые версии иногда отзывают устаревшие сертификаты автоматически.
Своевременное обновление сертификатов сохранит плавный процесс сборки и предотвратит блокировку публикации приложений.