엔터프라이즈 배포 인증 이슈, 인증 관련 내용 정리
엔터프라이즈 배포 인증 이슈, 인증 관련 내용 정리
iOS 앱 개발·빌드·배포에 필요한 모든 개념 총정리
1. Apple Developer 생태계 전체 구조
iOS는 Apple이 승인한 개발자가 Apple이 허용한 기기에 Apple 인증으로 서명된 앱만 실행할 수 있다.
이를 위해 필요한 요소:
| 개념 | 역할 |
|---|---|
| Certificate (인증서) | 앱을 누가 서명했는지 증명 |
| App ID (Identifier) | 어떤 앱인지 식별 |
| Bundle ID | 코드 레벨에서 앱을 구분하는 고유 ID |
| Provisioning Profile | 앱 + 인증서 + 권한 + 기기 허용 패키지 |
| Signing | 앱 빌드에 인증서를 부여 |
| Entitlements | 앱의 기능 권한 |
| Devices (UDID) | 개발/Ad-hoc 설치 가능한 디바이스 |
2. Bundle ID / App ID
Bundle ID
- Xcode 프로젝트 안에서 앱을 구분하는 ID
- 예:
com.mycompany.myapp
App ID (Identifier)
Apple Developer Console에서 생성하는 앱 식별자.
Bundle ID와 매칭됨.
종류
1) Explicit App ID
com.company.myapp- 푸시, 인앱결제 등 특수 기능 활성화 가능
2) Wildcard App ID
com.company.*- 푸시/인앱결제 등 Entitlement 기능 불가
- 테스트용 간단 프로젝트에만 적합
3. Certificates (인증서)
앱을 누가 만들었는지 Apple이 검증하기 위한 인증 방식.
인증서 종류
1) Development Certificate
- 개발 중 디바이스 테스트용
- 로컬 Mac에서 Xcode가 사용
2) Distribution Certificate
배포용. 두 가지 유형:
- App Store Distribution
- Enterprise (In-House) Distribution
파일 형식
.cer: 인증서 자체.p12: 인증서 + Private Key
빌드 서버 또는 다른 Mac에서 빌드하려면 반드시 필요
4. Provisioning Profile (프로비저닝 프로파일)
Provisioning Profile은 앱이 실제 기기에서 실행되기 위한 허가증.
구성 요소:
App ID + Certificate + Device(옵션) + Entitlements
역할
- 어떤 앱인지(App ID)
- 누가 서명했는지(Certificate)
- 어떤 기기에서 실행 가능한지(UDID)
- 어떤 기능을 사용할 수 있는지(Entitlements)
종류
1) Development Provisioning Profile
- 개발 중 기기 테스트용
- UDID 등록 필요
- Development Certificate 사용
2) Ad-Hoc Provisioning Profile
- 외부 테스트용
- 최대 100개 UDID 필요
- Distribution Certificate 사용
3) App Store Distribution Profile
- App Store 배포용
- UDID 필요 없음
- Distribution Certificate 사용
4) Enterprise (In-House) Profile
- 기업 내부 배포용
- UDID 필요 없음
- Enterprise Distribution Certificate 사용
5. Entitlements
앱이 사용 가능한 기능 권한 목록.
예:
- Push Notifications (APS)
- Keychain Sharing
- Sign In with Apple
- App Groups
- Universal Links (Associated Domains)
- Background Modes
Entitlement는 Provisioning Profile에 포함되어 있어야 유효.
6. Devices (UDID)
UDID는 개발/Ad-hoc에서만 필요.
| 배포방식 | UDID 필요 여부 |
|---|---|
| Development | 필요 |
| Ad-hoc | 필요 |
| App Store | 불필요 |
| Enterprise | 불필요 |
7. iOS 앱 빌드·배포 전체 흐름
1단계: 앱 식별
- Xcode에서 Bundle ID 설정
- Apple Developer에서 동일한 App ID 생성
2단계: 인증서 발급
- Development Certificate → 개발용
- Distribution Certificate → 배포용
3단계: Provisioning Profile 생성
- App ID 선택
- 사용할 인증서 선택
- 개발/Ad-hoc일 경우 UDID 등록
- 필요한 Entitlement 자동 포함
4단계: Xcode Signing
- 인증서와 프로비저닝 프로파일을 이용해 앱 서명
5단계: 배포 방식
개발용 테스트
- Developer Cert + Development Profile
Ad-hoc 테스트
- Distribution Cert + Ad-hoc Profile
App Store 배포
- Distribution Cert + App Store Profile
Enterprise 배포
- Enterprise Distribution Cert + In-house Profile
8. 전체 구조 요약
Certificates (인증서) │ App ID (Bundle ID와 연결) │ Provisioning Profile │ Xcode Signing │ 빌드된 .ipa │ ┌─────────────┬─────────────┬──────────────┬──────────────┐ │ Development │ Ad-hoc │ App Store │ Enterprise │ └─────────────┴─────────────┴──────────────┴──────────────┘
9. 자주 발생하는 문제 & 원인
Safari에서 Custom URL Scheme이 안 열림
- info.plist에 Scheme 미등록
- 앱이 설치 안 되어 있음
- Enterprise 인증서/프로파일 문제로 앱 실행 불가 상태
- URL scheme 문법 오류
.p12 / .mobileprovision 문제
- 프로비저닝 프로파일과 인증서가 매칭되지 않음
- Private Key 없는 .cer만 가져온 경우
Push 알림 안 되는 경우
- App ID에서 Push 활성화 안 함
- 프로비저닝 프로파일에 APS Entitlements 누락
- 서버에 잘못된 인증서 또는 APNs Key 업로드
필요한 추가 정리 가능
원하면 다음 내용도 추가로 정리해 줄 수 있음:
- Xcode 자동서명 vs 수동서명
- Enterprise 배포 전체 과정 상세
- 푸시 인증서 vs APNs Key 차이
.ipa내부의embedded.mobileprovision분석법- Custom URL Scheme 디버깅 방법
This post is licensed under CC BY 4.0 by the author.