본문 바로가기
AI 및 IT관련

유니티(Unity) 맥 macOS 앱 코드사이닝과 공증(Notarization) 하기

by daveseo 2025. 3. 24.
반응형

이번에 맥으로 유니티앱을 만드는 프로젝트를 진행하고 있다. 

맥 OS 용 코드사이닝은 이게 헷갈리는게 많아서 좀 기록을 해두려고 한다. 

 

진행절차는 아래와 같다. 

  1. 준비 단계 (완료)
    • ✓ Apple Developer Program 가입
    • ✓ CSR 생성 및 인증서 발급받기
    • ✓ installer_config.json 설정
    • ✓ entitlements 파일 생성
  2. 인증서 설치
    • developerID_application.cer 설치
    • developerID_installer.cer 설치
    • 키체인에서 인증서 확인 
  3. 앱 코드 사이닝
    • create_dmg.sh 스크립트가 codesign_utils.sh를 사용하여
    • entitlements를 적용하여 앱 서명
    • 서명 검증
  4. DMG 생성 및 서명
    • DMG 파일 생성
    • DMG 파일에 코드 사이닝
    • DMG 서명 검증
  5. 공증(Notarization)
    • 서명된 DMG를 Apple 서버로 업로드
    • 공증 대기 및 확인
    • 공증 완료 후 staple 처리

 

1. 

우선 CSR 을 만든다. CSR 은 PC당 고유해서 발급이 된다. 

이건 키체인관리자에서 만들 수 있다. 

키체인 관리자를 열고서 상단 메뉴를 확인하면 

상단메뉴

 

키체인 접근 -> 인증서 지원 -> 인증 기관에서 인증서 요청 을 선택한다.

여기에 본인 이메일 주소와 이름을 적는다. 

그리고 사전에 세팅해둔 키관리 폴더에 잘 킵해둔다. 

 

그 다음은 애플키관리자(애플의 연간 계정을 등록해서 키를 관리하는 사람) 에게 

이 CSR 을 보내서 2개의 인증서를 받아야 한다. 

  1. "Developer ID Application" 인증서
    • 이것이 기본적으로 필요한 인증서입니다
    • 앱 자체(.app)를 서명하는데 사용됩니다
  2. "Developer ID Installer" 인증서
    • DMG 파일을 서명하는데 사용됩니다
    • 배포용 패키지에 서명할 때 필요합니다

 

애플 키관리자는 내가 준 CSR 파일을 받아서

애플 사이트에서 Developer ID Application 와 Developer ID Installer 를 생성한 후 나에게 cer 파일을 전달해주게 된다. 

 

난 처음에 여기서 실수를 좀 했는데.....(잘 몰랐음)

Mac Installer Distribution 이게 필요한 줄 알았다. 근데 아니었음. ㅠㅠ

 

 

 

자, 이제 인증서를 받았다고 하고 (아래 이미지처럼 잘 보관)

 

각 인증서를 더블 클릭에서 나의 키체인에 잘 등록해주자. 

그러면 아래 이미지 처럼 나오게 될 것이다. 

 

여기서 주의 할 점!

절대 항상 신뢰하는 인증서로 등록하지 말 것!!

이것 때문에 내가 시간을 일주일을 까먹었다.... ㅠㅠㅠㅠㅠ 

절대 신뢰할 수 있는 앱으로 하지 말아야 한다.  이 설정을 지피티나 이런 애들한테 물어보면 신뢰할 수 있는 인증서로 하라고 하는데

그러면 나중에 빌드가 다 터진다. 

그러면 또 원인을 다른데서 찾고.... 시간낭비 낭비 ㅠㅠ 삽질의 삽질을 거듭하게 된다 ㅠ

 

 

순서는 아래와 같이 진행했다. 

(1) 나는 유니티로 앱을 빌드한 후

(2) 그 다음 쉘스크립트를 이용해서 앱코드서명을 하고 

(3) DMG 파일을 생성하고

(4) DMG 서명하기

(5) DMG 공증하기

 

 

 

그리고 커맨드에서 하면 로그도 잘 안나와서 아에 쉘스크립트를 작성해서 진행했다. 

1단계 - 앱코드 서명 

2단계 - dmg 파일 만들기

3단계 - dmg 서명

4단계 - dmg 공증하기

 

 

 

 

 

 

 

앱코드 사이닝 검증 명령어

codesign -d -vv "/Users/폴더명/검증할앱이름.app"

 

위와 같이 터미널에 입력하고 아래와 같이 나오면 일단 앱 코드 사이닝은 성공한 것이다. 

 

 

만약에 앱 외에 

별도로 내가 만든 라이브러리들이 포함 되어야 한다면 

앱 안에 아래와 같은 구조로 폴더를 포함시켜줘야 한다. (폴더를 다른데 두면 안됨)

반응형