프로비저닝 프로파일(Provisioning profile)
원칙대로라면 오직 Apple만이 앱 실행을 할 수 있읍니다
하지만 프로비저닝 프로파일과 함께라면??! 두려울게 업찌!!
프로비저닝 프로파일을 이용해 개발자가 배포한 앱도 실행할 수 있다구요!!
엥 도대체 먼말이냐;;; 🤔 좀 알아먹게 설명을 해바라;;
흠,,, 그러니까 애플 놈들이 배포한 앱을 제외하면 기본적으로는 다 못믿을 앱이란 말이져?? 예를 들어 인터넷에 어떤 앱이 올라와있는데 얘가 막 나쁜맘 먹고 이상한 코드 심어놓은 앱일 수도 있고,, 그렇단 말이에요!
🤔 흠 그럼 어떤 앱을 깔고, 어떤 앱을 안깔지 어떻게 결정 하는데?
🤓 만약 개발자가 신뢰할 수 있는 사람이라면 이 앱은 설치해도 되겠군 ㅇㅇ 라고 생각할 수 있겠져?
즉, 디바이스에서 앱을 실행하기 위해서는 내 디바이스가 개발자를 신뢰할 수 있는지를 알아야 앱 설치를 허락할지 말지를 결정할 수 있는데, 이 결정을 도와주는 파일이 프로비저닝 프로파일입니다.
요 파일은 앱을 테스트하려고 하는 디바이스에 설치가 되어야 합니다.
🤔 엥 그러면 여기에 뭔 내용이 담겨 있길래 개발자가 만든 앱을 믿고 수행할 수 있게 도와주는건데???
프로비저닝 프로파일은 아래와 같은 정보를 포함합니다.
- 앱 ID
- 푸시 알림, Passbook, HealthKit, CloudKit 등과 같이 앱에서 사용할 수있는 특별한 Entitlements (권한/자격)
- 앱 실행이 허용 된 기기의 UDID 목록
- Apple에서 발급 한 배포 인증서 (certificate)
iOS 기기는 Provisiong Profile을 설치 후 앱의 서명에 사용된 Certificate를 포함하는 지 확인하고, 기기의 UDID와 App ID도 맞는 지 확인한 후에 앱의 설치를 허용합니다.
즉, 프로비저닝 프로파일은 개발 및 테스트를 위해 iOS 장치에서 애플리케이션을 실행할 수 있도록 Apple에서 발급한 특별 hall pass 라고 할 수 있습니다
목적에 따라 아래와 같은 다른 유형의 프로파일을 사용할 수 있는데요, 이 내용에 대한 자세한 정보가 궁금하다면 이곳을 확인하세요!
- App Store Connect
- Ad-Hoc
- Enterprise
- Development
그래서 어떻게 생겨먹었냐구요? 직접 까봅시다
프로비저닝 프로파일을 얻기 위해선 우선 .ipa
로 archive 된 파일이 필요합니다. 우선 저는 App Store Connect 를 체크하고 export 해줘씀여
그럼 이런 파일들이 담긴 폴더가 하나 나오는데
여기서 .ipa
를 .zip
확장자로 바꾸고
더블 클릭해서 압축 풀어주면 폴더가 쨘 나옵니다
여기서 Payload
폴더 안의 내 app 을 확인할 수 있는데
우클릭해서 패키지 내용 보기를 클릭합니다
이런 폴더가 다시 쨘하고 나오는데!!
보이나요 embedded.mobileprovision
?!?!?! 바로바로 우리의 프로비저닝 프로파일이죠.
아래 명령어로 내용을 확인할 수 있습니다. vi 로 열면 깨지는 글자들이 있더라고요?
$ security cms -D -i embedded.mobileprovision
근데 걍 더 좋은건 뭔줄 아셈여? 이 상태에 space 누르면 미리보기로 바로 내용 뜬다는 것 ㅋ
진짜로 Entitlements, 인증서, 유효기간 등이 명시되어 있네유? 만약 실행 환경이 프로비저닝 프로파일에 명시된 자격 조건과 맞지 않는다면 앱을 실행할 수 없겠쥬?
님덜 근데 위에서 “목적에 따라 다른 유형의 프로비저닝 프로파일을 사용” 한다고 그랬잖아여? 제가 비록 enterprise 계정은 아니라 ^^,, Enterprise 는 빼낼 수 없었지만 나머지 세개는 다 뽑아봤습니다. 머가 다른지 궁금하니까여~
한번 보면 조금씩 차이가 있긴 하죠???
AdHoc 이나 Development 에서는 아까 AppStoreConnect 의 provisioning 에선 못봤던 Provisioned Devices 항목도 있네요. 이거 뭐냐면 앱 실행이 허용 된 기기의 UDID 목록임!! ㅇㅇ
+) 추가로 Enterprise 도 빼봤는데 프로비저닝 프로파일 이름과 Provisioned Devices 항목이 없다,, 정도만 다른거 같네요?
Bonus
참고로 내 로컬에 있는 모든 프로비저닝 프로파일은
~/Library/MobileDevice/Provisioning\ Profiles
경로를 통해 확인할 수 있습니다.
여기에 있는 provisioning profile 이 최종적으로 .app 내에 들어가는 형태인가봐여? 신기
마무리
하쒸 근데 이거 갑자기 왜썼지.,,???
요즘 certificate 랑 provisioning profile 집중적으로 조지면서 이전에 정리해놨던 것들이 슬슬 조금씩 이해가 가고 있는것 같다,,?
ㅎㅎ,, 그럼 20000!
참고
http://la-stranger.blogspot.com/2014/04/ios.html
https://www.sharpmobilecode.com/making-sense-of-ios-provisioning/
https://medium.com/ios-os-x-development/ios-code-signing-provisioning-in-a-nutshell-d5b247760bef