[iOS] iOS PP 알아보기

iOS PP 알아보기

Apple의 원칙


‘애플(Apple)만이 자신들의 하드웨어(iOS)에 어떤 소프트웨어가 동작하도록 할 수 있다.’

애플이 아닌 내가 iOS에 내 소프트웨어를 동작하고 싶다면,
Apple의 신뢰(Apple 인증서)를 받아야 한다.
(인증서를 보유한다는 것은 Apple이 나를 신뢰한다는 뜻이기도 하다)



Apple 인증서 발급 방법


  1. 키체인 접근앱에서 CSR(Certificate Signing Request) 발급
    (키체인 접근앱은 공개키와 개인키를 자동으로 생성한다. - 잃어버리면 다신 앱 스토어에 배포 못함, 이 키를 이용하여 CSR 발급)
    (이 키는 키체인 접근 앱의 key 카테고리에서 확인할 수 있다.)
    (CSR은 개발자의 이름, 이메일, 공개키를 포함하고 있고, 개인키를 이용하여 사인된다. - 이 매커니즘을 통해 애플은 정말로 사용자가 이 것을 만들었음을 확인)

  2. Apple 개발자 센터에 가서 방금 발급받은 CSR인증서를 이용하여 Apple 인증서를 받는다.
    (개발자는 이 인증서를 키체인 접근 앱에 추가할 수 있고, 이는 My Cerificate 카테고리에 추가된다.) (여기서 발급받는 Apple 인증서는 Developer(개발용 인증서)와 Production(배포용 인증서)로 나뉜다.)

이렇게 Apple 인증서를 키체인앱에 추가하면, 이제부터 나는 Apple을 대신하여
소프트웨어(앱)을 실행할 수있는 권한을 갖게 된다.



그럼 PP(Provisioning Profile)은 무엇일까?


디바이스에서 앱을 실행하기 위해서는 내 디바이스가 개발자를 신뢰할 수 있는지를 알아야 앱 설치를 허락할지 말지를 결정할 수 있다.
이 역할을 해주는 것이 Provisioning Profile 이다.

즉, iOS 디바이스들을 위에서 만든 Apple 인증서와 연결하는 역할을 한다.
프로비저닝 프로파일이라는 작업을 거치면, *.mobileprovision 이라는 형식의 파일이 생기는데,
이 파일은 iOS 앱을 컴파일 하는 과정에서 사용된다.
그러므로 앱을 테스트하려고 하는 디바이스에 설치가 되어야한다.

프로비저닝 포탈에서 받은 포로비저닝 프로파일을 더블클릭하면
Xcode가 인식하고 자동으로 프로비저닝 프로파일 목록에 저장한다.

개발자는 복수의 프로비저닝 파일을 가질 수 있지만,
프로비저닝 프로파일을 생성할 때, 연동한 App Id와
실제 컴파일하려는 앱에 설정된 bundle Id가 일치해야하므로,
결국 각 프로젝트마다 하나의 프로비저닝 프로파일을 만들게 된다.


이 모든 과정을 코드사이닝이라고 부를 수 있다.

코드사이닝이란?
디지털 서명을 사용해 소프트웨어 개발자 이름을 프로그램과 연결시키는 일련의 행위를 말하는데
위에서 한 작업들이 이와 같기 때문이다.



빌드 및 배포 과정

  1. Ad-Hoc 배포

위 과정을 거치면,

총 3가지를 가지게 된다.


이 3가지를 이용하여 Xcode에서 빌드를 하면,
.app 파일을 얻게 되는데, .app 패키지 내부에는 2가지가 존재한다.


앱이 최종적으로 디바이스에 설치될 때

총 3가지 확인 후 실행된다.



  1. Enterprise 배포

개발자의 회사가 많은 아이폰 유저들을 가진다고 하면, 애플은 회사를 신뢰할 수 있는 충분한 이유가 있으므로 개발자에게 정말로 애플인 것처럼 개발한 앱들을 서명할 수 있는 인증서를 발급해준다.

따라서 이 인증서로 서명된 앱들은 따로 확인을 거치지 않고 모든 디바이스를 애플에 등록하지 않고도 개발된 앱을 디바이스에서 바로 시작할 수 있도록 해준다.



  1. App Store에 배포

Enterprise 배포와 비슷하지만 이 배포 과정에 포함되는 프로비저닝 프로파일은
빌드된 앱이 어떤 디바이스에서도 실행이 되지 않도록 한다.
App Store를 위해 빌드된 앱은 제출용도 말고는 어디서도 쓸 수 없다.

애플 측에 앱을 제출했을 때의 해당 앱은 개발자에 의해 이미 서명되었고,
프로비저닝 파일을 가지고 있기 때문에 애플에 인증된 개발자가 제출한 앱임을 확인할 수 있다.
애플 측에서 앱 배포를 승인하면 애플에서 자신들의 서명을 다시함으로써
모든 iOS 디바이스에서 실행될 수 있도록 해준다.