들어가며
개발자 계정을 구매한 이후에도 AppStore나 TestFlight에 앱을 배포하는 과정에는 많은 것들이 필요합니다.
오늘은 그 과정 속에서 필요한 것들이 무엇인지, 왜 필요한지 알아보도록 하겠습니다!
먼저, Apple Developer Program에 enroll하게 되면 TestFlight나 AppStore배포만 할 수 있는 것이 아닙니다! 비싼만큼..할 수 있는 것들이 다양하게 있으니 하단 링크를 방문하여 읽어보시는 것을 추천드립니다!
Developer Program에 가입했다면..
이제 무엇을 해야할까요? 개발자 프로그램을 구매하고 구매 완료 메일을 받으셨다면, 우리는 인증서(Certificate)가 필요합니다.
인증서..가 근데 엄청 많아요ㅎㅎ 종류는 다음과 같습니다.
- CSR(Certificate Signing Request)
- 개발용(Development) 인증서
- 배포용(Distribution) 인증서
- Provisioning Profile 인증서
- Push 인증서
- MDM Push 인증서
이런 것들이 왜 필요할까요? 내가 돈도 냈고 내가 만든 앱을 테스트하겠다는데?
Apple이 개발한 OS가 동작하는 하드웨어에서 특정 소프트웨어의 동작 권한은 오직 "Apple"만이 부여할 수 있습니다.
즉, Apple만이 자신들의 하드웨어에서 어떤 소프트웨어를 동작시키는 주체입니다. 배포된 App들의 실행 권한을 가지고 있는 셈이죠.
근데 우리는 개발자 계정을 구매하였고 구매 혜택으로는 "배포"기능이 포함되어있습니다.
개발자 계정을 가진 개발자들은 특정 인증서들을 통해 애플로부터 신뢰를 얻게되고, 애플 대신 앱을 실행할 수 있는 권한을 부여받게 됩니다.
인증서들은 이 과정에서 필요한 것이고, 이를 기반으로 매번 앱이 실행될 때 애플로부터 인증이 된 앱인지 검사를 받게 됩니다.
정확히는 해당 앱이 애플로부터 인증을 받았는지, 실행 권한이 부여되었는지 확인하게 됩니다. 이후 서술하겠지만, 배포용 인증서의 기간이 만료되면 앱스토어에 올라가있는 앱이더라도 해당 앱은 더 이상 사용할 수 없는 상태가 되는데 이것 또한 같은 맥락에서 설명이 가능할 것 같습니다.
암튼, 그래서 위와 같은 이유로 인해 우리는 다소 복잡한 과정을 거쳐야합니다..뭐 어쩌겠어요 하라면 해야지ㅎㅎ
자 배포 시작도 전에 벌써부터 뭐가 많은데 천천히 다양한 인증서들의 큰 개념을 살펴보겠습니다!
CSR(Certificate Signing Request)
이건 인증서는 아니고, 인증서 서명 요청입니다. 쉽게 말하면 인증서 발급을 위한 신청서라고 할 수 있습니다! 인증서가 있어야 무언가를 할 수 있는 것 같으니 CSR이 가장 먼저 선행되어야겠죠?
그렇기 때문에 인증서 발급을 위해서는
"CSR 발급 신청" > "CSR 발급" > "발급된 CSR로 인증서 발급 신청" > "인증서 발급" 의 과정을 거쳐야 합니다. 이 과정을 꼭 기억해주세요!
한 번 만들어놓은 CSR은 계속 재사용이 가능합니다! 이메일과 기관명이 동일하다면 한 번 만들어놓은 CSR을 계속 사용하면 됩니다.
개발용(Development) 인증서, 배포용(Distribution) 인증서
개발용(Development) 인증서는 Developer Program에 가입한 뒤, https://developer.apple.com/에서 Certificate에 기본적으로 만들어져있는 것을 볼 수 있습니다.
배포용(Ditribution) 인증서는 말 그대로 앱을 배포하기 위해서 필요한 인증서입니다. 배포를 하기 위해서 가장 중요한 인증서입니다! 이 인증서가 만료되면 제 아무리 앱스토어에 이미 등록된 앱 일지라도 검정화면만 나올 뿐..실행이 되지 않는 불상사가 발생하기도 한답니다😕
Provisioning Profile 인증서
배포용 인증서와 함께 중요한 인증서 중 하나입니다.
이 인증서가 있어야 App의 테스트, AppStore에 앱 등록, App build를 할 수 있는데요, 앱스토어에 앱을 올리지 않아도 되는 앱이라도, 아니 심지어 앱을 테스트하기 위해서도 필요한 인증서입니다.
앞서 기술했던 개발용 인증서, 배포용 인증서가 이 Provisioning Profile 인증서를 만들기 위해 필요한 인증서입니다! Provisioning Profile에서도 개발용과 배포용이 나누어지기 때문에 앞서 기술했던 개발용 인증서, 배포용 인증서와 짝을 이룬다고 생각해주시면 좋을 것 같습니다.
프로비저닝 프로파일은 app id, certificate, device정보를 가지고 있어, iOS기기 애플 인증서를 연결 해주는 역할을 합니다.
- App ID : 앱 스토어에 등록될 Bundle ID가 등록.
- Certificate : 위에서 만들었던 인증서.
- Device : 디바이스의 UDID
개발자는 복수의 Provisioning Profile을 가질 수 있습니다.
Provisioning Profile은 생성시에 bundle Identifier를 요구하는데 실제 컴파일 하려는 앱의 bundle Identifier와 일치해야 하므로 결국에는 각 프로젝트마다 자신의 Provisioning Profile을 가져야 한다고 알고계시면 될 것 같습니다!
Push 인증서, MDM Push 인증서
둘 다 앱에서 Push 메시지를 받기 위해서 필요한 인증서입니다. 두가지가 다 필요한 것은 아니고 일반적인 경우에는 Push 인증서만 있으면 됩니다!
MDM Push인증서는 MDM이라는 특수환경에서 Push를 받기 위해 필요한 인증서입니다.
MDM은 저도 처음 듣는 용어라서 링크를 첨부하겠습니다. 간략하게는 모바일 기기가 통제되는 환경이라고 하는데, MDM 환경 내에서는 앱을 마음대로 설치할 수도 없고, 허가 되지 않은 앱을 사용할 수도 없다고 하네요!
끝!
지금까지 배포를 위해 필요한 개념들에 대해 알아보았습니다!
다음 포스팅에서는 이 개념들이 실질적으로 사용되는 배포 준비 과정을 살펴보도록 하겠습니다!
글에 오류가 있다면 댓글작성 꼭! 부탁드릴게요. 감사합니다 :)