TIP-맥OS

macOS 앱 코드서명 및 새로운 공증 방법 (Code Signing & Notarization with notarytool)

무한열정 2023. 12. 4. 11:26

■ 맥환경 개발기기 인증서 등록 및 설치

이 부분은 다음 글에 잘 정리되었으므로 참고 한다.

https://taejoone.jeju.onl/posts/2022-02-04-mac-m1-codesign/

본문을 참고하여 ASP 앱암호까지 생성해야 한다.

 

 

■ 인증서 정보 확인

  • 서명을 위한 추가 정보를 획득하기 위해 필요
    $ xcrun altool --list-providers -u "애플계정(Apple-ID)" -p "앱비밀번호"
  • 정상 구동시 메시지
    ProviderName              ProviderShortname PublicID                             WWDRTeamID 
    ------------------------- ----------------- ------------------------------------ ---------- 
    사용자명(UserName)|일련번호|1 ZZZZZZZZZZ        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ZZZZZZZZZZ
  • 다음 오류가 발생하는 경우
    xcrun: error: unable to find utility "altool", not a developer tool or in PATH
    다음 명령어를 실행하여 대응한다.
    $ sudo xcode-select -r
    

 

■ 코드 서명하기 (Code Signing)

  • app를 대상으로 서명한다.
    $ codesign --force --verify --verbose --timestamp \
                 --options runtime \
                 -i 앱번들ID(App-Bundle-ID) \
                 --sign "Developer ID Application" \
                 "사인할파일명.app"
  • 코드 서명 결과
    사인한파일명.app: replacing existing signature
    사인한파일명.app: signed app bundle with Mach-O thin (arm64) [org.xxxxx.yyyyy]

 

■ 공증(Notarization) 하기 유의 사항

  • .app를 반드시 .pkg .dmg .zip으로 패키징을 하여야 한다.

 

■ 공증(Notarization) 하기 (OLD)

  • 이 방법은 2023년 가을에 만료 되었다. 따라서 altool을 사용하는 방법은 더 이상 사용할수 없다.
  • ASC-PROVIDER : ProviderShortname에서 정보를 얻는다. 
  • $ xcrun altool --notarize-app \
                --primary-bundle-id "org.eclipse.platform.ide" \
                --username "애플계정(Apple-ID)" \
                --password "앱비밀번호" \
                --asc-provider ProviderShortname입력 \
                --file 사인할파일명.dmg
  • 결과 메시지
    2023-12-04 09:40:40.551 *** Warning: altool has been deprecated for notarization and starting in late 2023 will no longer be supported by the Apple notary service. You should start using notarytool to notarize your software. (-1030)
    No errors uploading '사인할파일명.dmg'.
    RequestUUID = rrrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr

 

■ 공증(Notarization) 하기 (NEW)

  • 결과 (전체 dmg파일을 모두 올리기 때문에 상당시간 기다려야 한다.)
    Conducting pre-submission checks for 사인할파일명.dmg and initiating connection to the Apple notary service...
    Submission ID received
      id: ssssssss-ssss-ssss-ssss-ssssssssssss
    Upload progress:  6.50% (110 MB of 1.65 GB) 
    
    Successfully uploaded file
      id: ssssssss-ssss-ssss-ssss-ssssssssssss
      path: /Volumes/EXSSD/~~~~~~~~~~~~~/사인할파일명.dmg
  • id는 Submission ID이다. 추후 조회용 ID로 사용되며 반드시 기록한다.

 

■ 공증(Notarization) 결과 조회

  • Submission ID로 공증결과를 확인한다.
    $ xcrun notarytool info \
    --apple-id "애플계정(Apple-ID)" \
    --password "사인할파일명" \
    --team-id "팀ID" \
    서브미션ID(SubmissionId)
  • 조회 결과 (현재 status: In Progress 상태 이다.)
    Successfully received submission info
      createdDate: 2023-12-04T00:59:59.202Z
      id: ssssssss-ssss-ssss-ssss-ssssssssssss
      name: 사인할파일명.dmg
      status: In Progress

 

■ 공증(Notarization) 로그 조회

  • 공증에 대한 로그 조회
    xcrun notarytool log \
    --apple-id "애플계정(Apple-ID)" \
    --password "앱비밀번호" \
    --team-id "팀ID" \
    서브미션ID(SubmissionId)
  • 공증 결과 로그 (Accepted가 나기 전에는 다음과 같이 보인다. Invalid 상태가 떨어지면 JSON형태의 로그를 볼수 있다.)
    Submission log is not yet available or submissionId does not exist