생략할 수 없는 Apple 배포 프로세스 'Notarization'

Falcon·2023년 3월 8일
1

etc

목록 보기
4/5

문제 상황

iOS 앱을 웹에 배포했는데, 다운로드 받으니 파일이 열리지 않는다.

다음과 같이 애플 개발자 등록 후에 곧바로 만들어진 앱 파일을 배포할 수 있는 것이 아니였다.

Certificate , Notarization + Stampling 을 거치지 않으면
내가 만든 앱을 웹이나 App Store 에 배포할 수 없다.
(정확히는 업로드는 가능하나, 파일을 다운받았을 때 사용자가 열 수 없다.)

이는 안전하지 않은 악성파일을 배포하는 것을 방지하기 위한 것으로
모든 Apple 플랫폼의 개발자들은 배포 전에 Notarization + Stampling 을 거쳐야한다.

altool 대신 notary

Notarization 이란 애플로부터 내가 배포하고자하는 애플리케이션 파일에 "악의적인 코드가 없음"을 확인 받는 것이다.

다음은 notarytool 이란 명령어로 애플리케이션 파일을 검증받는 예다.

# 이 명령어는 내가 배포하고자 할 파일을 Apple 서버에 업로드한다.
$ xcrun notraytool submit [배포파일 경로]

애플은 애플리케이션 Distribution(배포) 이전에 반드시 Notarization(공증) 받기를 권한다. (사실상 강제)

1. Get team id for notarytool

$ xcrun altool --list-providers -u [Apple-Developer-Email]

2. Store keychain for automatically app signed

# This process stores your credentials securely in the Keychain. You reference these credentials later using a profile name.
$ xcrun notarytool store-credentials --apple-id [Apple-Developer-Email] --password [App-Password-by-apple] --team-id [Team-Id]

3. Use keychain in shell file

KEYCHAIN_PROFILE_NAME="[blahblah]"
xcrun notarytool --keychain "${KEYCHAIN_PROFILE_NAME}"

4. Staple your file

애플리케이션의 확장자로 압축된 패키지의 경우 .pkg.dmg , 실행 파일의 경우 .app 으로 생성되었을 것이다.
위 1~3번 과정에서 Notarization 을 성공했다면, 그 다음은 Gatekeeper (애플 앱 전용 보안관리자로만 알아두라) 라는 녀석이 해당 앱이 공증받았다는 사실을 알 수 있도록 도장을 찍는게 필요하다.
그게 바로 다음 명렁어다.

$ xcrun stapler staple "[App-Path]"

5. Upload package

$ xcrun notarytool submit package.zip \
--keychain-profile [keychain-name] \
--wait

결과 이메일

성공적으로 notarization 을 마치면 등록된 개발자 계정 이메일로 다음과 같은 메일이 온다.
앱을 배포해도 배포할 수 있다는 의미다.

이제, AppStore 나 웹상에 notarization 및 stampling 이 완료된 내 앱을 배포할 수 있다.


🔗 Reference

profile
I'm still hungry

0개의 댓글