Post

엔터프라이즈 배포 인증 이슈, 인증 관련 내용 정리

엔터프라이즈 배포 인증 이슈, 인증 관련 내용 정리

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.