Ответ
Сертификаты обеспечивают цифровую подпись и безопасность на разных этапах жизненного цикла приложения.
1. Сертификаты для подписи кода (Code Signing)
| Тип | Назначение | Ограничения |
|---|---|---|
| Development | Подпись приложений для запуска на устройствах разработчика через Xcode. | Привязан к конкретному Apple ID. Работает только с устройствами, добавленными в dev portal. |
| Ad Hoc | Распространение билдов для тестирования на ограниченном наборе устройств (до 100) без App Store. | Требует явного указания UDID каждого тестового устройства в Provisioning Profile. |
| Production (App Store) | Подпись финальных билдов для публикации в App Store и TestFlight. | Не привязан к конкретным устройствам. |
2. Сертификаты для APNS (Apple Push Notification Service)
| Тип | Назначение |
|---|---|
| Apple Push Services (Development) | Отправка push-уведомлений в development-среде (сборки, подписанные Development-сертификатом). |
| Apple Push Services (Production) | Отправка push-уведомлений в production-среде (сборки, подписанные Ad Hoc или App Store-сертификатами). |
Ключевые различия и практика:
- Development vs Production (код): Нельзя использовать Development-сертификат для сборки в App Store, и наоборот.
- APNS-сертификаты отдельны: Для отправки пушей ваш backend должен использовать соответствующий (Development/Production) APNS-сертификат или ключ (Auth Key).
- Provisioning Profile — связующее звено: Профиль содержит сертификат, разрешенные устройства (для Development/Ad Hoc) и App ID, связывая всё вместе.
Пример создания CSR (запроса на сертификат):
# Стандартная команда для создания пары ключей и CSR
openssl req -new -newkey rsa:2048 -nodes -keyout "MyPrivateKey.key" -out "CertificateSigningRequest.certSigningRequest" -subj "/emailAddress=your.email@example.com, CN=Your Name, C=US"
Важно: Private Key (.key) храните в безопасности. Без него нельзя перевыпустить или использовать сертификат.