곧 설명할 일련의 과정은 애플이 앱의 보안과 무결성을 보장하기 위해 떨어놓은 호들갑이다. 인증서 발급 부분은 SSL에서도 사용하는 Chain of Trust, 공개키 암호화 방식과 기본적으로 같다.
아래 내용들은 이제 우리가 감내해야 하는 과정이다.
✅ CSR(Certificate Signing Request)이란?
CSR은 Certificate Signing Request(인증서 서명 요청)이란 뜻으로, 인증서 발급을 위한 필요한 정보를 담고 있는 인증서 신청 형식 데이터입니다.
CSR에 포함되는 내용으로는 개인키 생성 단계에서 만들어진 개인키(Private Key)와 공개키(Public Key)의 키쌍 중에서 공개키가 포함되며, 인증서가 적용되는 도메인에 대한 정보 등이 포함 됩니다.
✅ Code Signing이란?
Code Signing은 앱의 제작자가 서명한 개발자임을 확인하고 서명 후 내용의 변경이 없음을 보장하는 일종의 품질보증확인서다.
✅ 프로비저닝 프로필이란?
프로비저닝 프로필은 앱 제작에 관한 권한과 이용 기능을 표시한다. 4가지 종류가 있다.
- Development Profile: 등록된 디바이스만 앱을 인스톨 할 수 있다. 허가받은 디바이스 아이디가 명시되어있으며 디버그 모드에서 실행된다.
- App Store Profile: 판매를 위해 앱스토어에 앱을 등록할 수 있다.
- In-house Distribution Profile: 엔터프라이즈 개발자 계정에서만 사용 가능하며 회 사 내 계정을 가진 아무나에게 배포가 가능하다.
- Ad-hoc Profile: 정해진 대수만큼만 배포된다. 디바이스 아이디를 따로 명시하지 않는다.
앱스토어에서 설치한 앱은 위와 같이 Apple의 인증서로 Code sign되어 있다.
프로비저닝 프로파일은 .ipa
파일을 뜯으면 나온다. .ipa
파일의 압축을 풀면 Payload
디렉터리 안에 embedded.mobileprovision
란 이름의 파일이 있는데 entitlement, expriation date, provisioned devices 등의 정보를 볼 수 있다.
프로비저닝 프로필은 Xcode가 자동으로 만들어주는게 디폴트다. CI/CD를 쓰면서 혹은 팀간 공유 계정을 쓰고자 할 때 수동으로 넣어주는 경우가 있는 듯 하다.
CI/CD를 할 때 개인이 아닌 팀 단위에서 앱을 관리하고자 할 때 N명이 N개의 인증서와 프로필을 가지면 문제가 될 수 있다. 그렇다고 공통으로 관리되는 계정을 만들자니 인증서 문제로 로컬 빌드가 안되는 상황이 생길 수 있다. 이럴 때 CI/CD를 위해 독립적으로 관리되는 프로필이 필요한데 다행히 우리가 다 할 필요는 없고 Fastlane의 Match라는 서비스가 대신 해준다. (match)