인증서는 개발자의 Public Key와 Apple에서 발급한 Certificate Authority의 서명으로 구성된 파일입니다. 인증서 발급 과정에서 생성된 Private Key는 개발자의 로컬 환경에만 존재하며, 이와 짝을 이루는 Public Key가 Apple에 등록됩니다. 프로비저닝 프로파일은 이 인증서가 특정 앱에 대해 유효한지 확인하는 파일로, 앱의 번들 ID, 팀 ID, 기기 UUID, 그리고 사용할 수 있는 인증서 등을 포함합니다.
Apple은 인증서 및 프로비저닝 프로파일 관리를 자동화하여 개발자가 반복적인 작업을 줄일 수 있도록 돕습니다. 하지만, 여전히 불편함은 존재합니다. 특히, 새로운 기기가 인증서에 등록되거나 인증서에 수정이 발생하면, Xcode가 예기치 않게 인증서를 재생성하거나 기존 프로비저닝 프로파일을 만료시키는 경우가 있습니다.
Apple은 인증서 및 프로비저닝 프로파일 관리를 자동화하여 개발자가 반복적인 작업을 줄일 수 있도록 돕습니다. 하지만, 여전히 불편함은 존재합니다. 특히, 새로운 기기가 인증서에 등록되거나 인증서에 수정이 발생하면, Xcode가 예기치 않게 인증서를 재생성하거나 기존 프로비저닝 프로파일을 만료시키는 경우가 있습니다.
예를 들어, 개발자 A와 B가 같은 인증서와 프로비저닝 프로파일을 사용하고 있을 때, A가 자신의 기기를 추가하거나 인증서를 수정하게되면, B의 프로비저닝 프로파일은 더 이상 최신 상태가 아니게 됩니다. 이로 인해 B는 자신의 로컬 환경에서 인증서나 프로비저닝 프로파일이 유효하지 않다고 인식될 수 있으며, 경우에 따라 Xcode가 새로운 인증서를 생성하거나 기존 프로비저닝 프로파일을 갱신하려고 시도할 수 있습니다.
Fastlane match는 인증서를 Git 레포지토리나 AWS S3등의 저장소에 생성하고 인증서에 수정이 일어난 경우에는 한 명이 인증서를 갱신하고 나머지 개발자들은 읽기 모드로 접근하면 됩니다. 이 과정을 자동화하는 것이 Fastlane의 match 기능입니다.
fastlane match init
[✔] 🚀
[11:06:26]: fastlane match supports multiple storage modes, please select the one you want to use:
1. git
2. google_cloud
3. s3
4. gitlab_secure_files
?
원하는 저장소를 선택하면 Matchfile이 생성되고 인증서를 발급할 수 있습니다
⚠️ 인증서가 유출되지 않도록 비공개 레포지토리를 사용하거나 접근 권한을 제어하세요
// 배포 인증서
fastlane match appstore
// 개발 인증서
fastlane match development
// adhoc 인증서
fastlane match adhoc
// 읽기 모드
fastlane match appstore --readonly
인증서 발급할 때 사용되는 기본 정보를 매번 입력하는 게 번거롭다면 Matchfile이 있는 디렉토리에 .env.default 만들어 아래와 같이 사용할 수도 있습니다.
// .env.default
ACCESS_KEY="APIKEYEXAMPLE1Q2W3W4R"
TEAM_ID="A123P456PL"
// Matchfile
s3_access_key(ENV['ACCESS_KEY'])
team_id(ENV['TEAM_ID'])
마지막으로 프로젝트 설정에서 Automatically manage signing을 체크 해제하면 개발 인증서를 수동으로 관리할 수 있게됩니다.