Version: Unity 6.0 (6000.0)
언어 : 한국어
macOS 애플리케이션 코드 서명 및 공증
Xcode 및 커맨드 라인 툴로 공증하기

애플리케이션 코드 서명

코드 서명은 애플리케이션에 대한 코드 서명을 만드는 프로세스입니다. 이 서명은 애플리케이션의 무결성을 보장하고 모든 조작을 방지합니다. Apple 기기는 애플리케이션의 코드 서명을 사용하여 코드 서명이 생성된 후 변경된 사항을 감지합니다. 애플리케이션에 코드 서명이 없는 경우 기기는 사용자가 애플리케이션을 열기 전에 경고를 표시합니다.

참고: 애플리케이션을 공증하려면 Xcode 커맨드 라인 또는 Unity Build Automation으로 코드 서명을 해야 합니다.

서명 ID 생성

Unity는 생성하는 모든 macOS 빌드에 서명 ID라고 하는 코드 서명을 추가합니다. 애플리케이션을 공증하기 위해 Apple은 코드 서명에 개발자를 식별하는 개발자 ID 인증서와 같은 암호화 서명을 포함하도록 요구합니다.

새로운 개발자 ID 인증서를 생성하려면 다음 단계를 따르십시오.

  1. Create a New Certificate로 이동합니다.
  2. 프롬프트를 따라 프라이빗 키를 생성하고 Certificate Signing Request를 업로드합니다.
  3. 개발자 ID 인증서를 다운로드합니다. 이 인증서의 파일 포맷은 .cer입니다.
  4. 인증서를 클릭하여 Keychain에 추가합니다. Keychain에서 다음과 같은 형식으로 이름이 나타납니다. Developer ID Application : XXX (YYY).

애플리케이션 식별자 찾기

애플리케이션을 공증하려면 Apple은 애플리케이션 식별자를 사용하여 애플리케이션을 식별해야 합니다. 두 가지 방법으로 애플리케이션 식별자를 가져올 수 있는데, Unity에서 가져오거나 애플리케이션의 정보 프로퍼티 목록 파일에서 가져올 수 있습니다.

  • Unity에서 가져오는 방법:
    1. Edit > Project Settings > Player로 이동합니다.
    2. Other Settings 섹션을 확장합니다.
    3. Mac 앱 스토어 옵션으로 이동합니다.
    4. Bundle Identifier 프로퍼티가 애플리케이션 식별자입니다.
  • 정보 프로퍼티 목록 파일에서 가져오는 방법:
    1. Finder에서 빌드된 애플리케이션으로 이동합니다.
    2. 애플리케이션에서 오른쪽 클릭한 후 Show Package Contents를 선택합니다.
    3. Contents로 이동합니다.
    4. Info.plist를 엽니다.
    5. 애플리케이션 식별자를 나타내는 키는 CFBundleIdentifier입니다.

애플리케이션 식별자가 있으면 Apple에 등록할 수 있습니다. 등록하려면 다음을 수행하십시오.

  1. Apple 개발자 계정에 로그인합니다.
  2. Certificates, IDs & Profiles를 선택합니다.
  3. Identifiers를 선택합니다.
  4. 번들 ID를 추가합니다.

자격 생성

자격은 코드 서명이 포함하고 있는 권한이나 제한 사항으로 애플리케이션이 수행할 수 있는 작업을 제어합니다.

애플리케이션에 대한 자격을 설정하려면 다음을 수행하십시오.

  1. 빌드한 애플리케이션과 동일한 디렉토리에서 .entitlements 파일 확장자를 사용하여 애플리케이션과 동일한 이름의 파일을 만듭니다. 예를 들어 애플리케이션 이름을 MyProject로 지정하면 MyProject.entitlements라는 파일을 만듭니다.
  2. 텍스트 에디터를 사용하여 파일을 열고 다음 내용을 복사합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
       <key>com.apple.security.cs.disable-library-validation</key>
       <true/>
       <key>com.apple.security.cs.disable-executable-page-protection</key>
       <true/>
    </dict>
</plist>

이러한 자격은 macOS 애플리케이션이 Hardened Runtime을 사용하는 데 필요한 최소한의 자격입니다. 애플리케이션에 더 많은 자격이 필요한 경우 이 목록에 추가하십시오.

애플리케이션 코드 서명

애플리케이션을 코드 서명하려면 커맨드 라인을 사용해야 합니다. 컴퓨터에서 터미널을 열고 애플리케이션이 있는 디렉토리로 이동합니다.

코드 서명을 처리하는 데 필요한 읽기 권한이 있는지 확인하려면 다음 커맨드를 실행합니다("application_name.app"은 애플리케이션의 이름).

chmod -R a+xr "application_name.app"

애플리케이션을 코드 서명하려면 다음의 위치에 있는 커맨드를 실행합니다.

  • "application_name.app"은 빌드된 애플리케이션입니다.
  • "application_name.entitlements"자격 파일의 이름입니다.
  • "Developer ID Application : XXX (YYY)"서명 ID입니다.
codesign 
    --deep 
    --force 
    --verify 
    --verbose 
    --timestamp 
    --options runtime 
    --entitlements "application_name.entitlements" 
    --sign "Developer ID Application : XXX (YYY)" "application_name.app"

이 커맨드는 애플리케이션 번들 폴더를 통해 작동하며 모든 파일을 서명하고 안전한 타임스탬프를 추가하며 해당 서명에 설정한 자격을 포함합니다.

--deep 옵션을 사용하면 코드 서명에 문제가 발생할 수 있습니다. 원인은 다음과 같습니다.

  • 서명한 모든 코드에 동일한 코드 서명 옵션과 자격을 적용합니다.

  • 찾은 코드 파일만 서명합니다. 시스템이 데이터를 찾을 것으로 예상되는 위치에 코드 파일이 있는 경우 --deep을 사용하면 이러한 코드 파일을 서명하지 않습니다.

--deep 옵션과 이를 사용하여 문제를 해결하는 방법에 대한 자세한 내용은 코드 서명을 참조하십시오.

추가 리소스

macOS 애플리케이션 코드 서명 및 공증
Xcode 및 커맨드 라인 툴로 공증하기