Version: 2022.3
언어: 한국어
macOS 빌드 설정
Mac 앱 스토어에 애플리케이션 배포

macOS 애플리케이션 코드 서명 및 공증

이 페이지에서는 macOS 애플리케이션의 코드 서명 및 공증 프로세스에 대해 자세히 설명합니다.

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

공증은 Apple이 애플리케이션에 개발자 ID 코드 서명이 있고 악성 콘텐츠가 포함되어 있지 않은지 확인하는 과정입니다.공증에 대한 자세한 내용은 macOS 코드 서명 자세히 알아보기배포 전 macOS 소프트웨어 공증하기에 대한 Apple 문서를 참조하십시오.

Apple 기기에서 개발 중인 경우 Xcode, Xcode 커맨드 라인 툴 또는 Unity 클라우드 빌드를 사용하여 애플리케이션을 공증할 수 있습니다.Apple 기기를 가지고 있지 않은 경우 Unity 클라우드 빌드를 사용합니다.

이 페이지에는 다음 공증 방법에 관한 정보가 포함되어 있습니다.

참고:Mac 앱 스토어를 통해 애플리케이션을 배포할 때 공증은 필요하지 않습니다.Mac 앱 스토어의 업로드 프로세스에는 공증과 유사한 콘텐츠 확인이 포함되어 있습니다.자세한 내용은 Mac 앱 스토어에 배포를 참조하십시오.

Xcode를 사용하여 애플리케이션 공증

Unity는 빌드 프로세스 중에 Unity 프로젝트를 나타내는 Xcode 프로젝트를 생성할 수 있습니다.이 Xcode 프로젝트를 사용하여 애플리케이션을 공증할 수 있습니다.macOS 애플리케이션 빌드 단계에 따라 Unity 프로젝트에서 Xcode 프로젝트를 생성합니다.Xcode 프로젝트 공증에 대한 자세한 내용은 Apple의 [배포 전 macOS 소프트웨어 공증] 문서(https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution)를 참조하십시오.

Xcode 커맨드 라인 툴을 사용하여 애플리케이션 공증

Xcode 환경에서 애플리케이션을 공증할 수 없거나 수동으로 공증을 제어하려는 경우 Xcode의 커맨드 라인 툴을 사용할 수 있습니다.이를 위해서는 다음이 필요합니다.

애플리케이션 코드 서명

Xcode 커맨드 라인 툴로 애플리케이션을 공증하려면 먼저 애플리케이션에 코드 서명을 해야 합니다.이 섹션에서는 Xcode의 커맨드 라인 툴을 사용하여 애플리케이션에 코드 서명하는 방법을 설명합니다.

ID 서명

Unity는 제작하는 모든 macOS 빌드에 코드 서명을 추가합니다.이 간단한 코드 서명은 개발자로 식별하지 않습니다.Apple은 애플리케이션을 공증하기 위해 코드 서명에 개발자를 식별하는 암호화 서명을 포함하도록 요구합니다.이것을 서명 ID라고 합니다.일반적으로 개발자 ID 인증서를 사용합니다.

새로운 개발자 ID 인증서를 만들려면 새로운 인증서 생성으로 이동하여 다음을 수행합니다.

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

애플리케이션 식별자

애플리케이션을 공증하려면 Apple은 해당 애플리케이션을 식별해야 합니다. 애플리케이션 식별자를 가져오려면 Unity에서 가져오는 방법과 빌드된 애플리케이션의 정보 프로퍼티 리스트 파일에서 가져오는 방법이 있습니다.

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

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

  1. Apple Developer으로 이동하여 로그인합니다.
  2. Certificates, IDs & Profiles를 선택합니다.
  3. Identifiers를 선택합니다.
  4. 번들 ID를 추가합니다.

자격

자격은 코드 서명이 포함하고 있는 권한이나 제한 사항으로 애플리케이션이 특정 작업을 수행하는 것을 허용하거나 방지합니다.

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

  1. 빌드된 애플리케이션과 동일한 디렉토리에서 .entitlements 파일 확장자로 애플리케이션과 동일한 이름을 가진 파일을 생성합니다. 예를 들어 애플리케이션 이름이 Sample인 경우 Sample.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>

이러한 자격은 Hardened Runtime을 갖기 위해 macOS 애플리케이션에서 필요한 최소한의 자격입니다. 애플리케이션에 더 많은 자격이 필요한 경우 이 리스트에 추가합니다.

애플리케이션 코드 서명

코드 서명 프로세스는 커맨드 라인을 사용합니다. 시작하려면 터미널을 열고 애플리케이션이 있는 디렉토리로 이동합니다. 코드 서명을 처리하는 데 필수 읽기 권한이 있는지 확인하려면 "application_name.app"가 애플리케이션의 이름으로 있는 다음의 커맨드를 실행합니다.

chmod -R a+xr "application_name.app"

코드 서명은 특정 서명 ID를 사용합니다.일반적으로 이것은 개발자 ID 애플리케이션 서명 ID입니다.단, Mac 앱 스토어와 같은 일부 디지털 배포 서비스에는 다른 서명 ID가 필요합니다.

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

  • "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 옵션과 이를 사용하여 문제를 해결하는 방법에 대한 자세한 내용은 코드 서명을 참조하십시오.

공증을 위한 애플리케이션 업로드

애플리케이션에 코드 서명한 후에는 공증을 위해 Apple에 업로드해야 합니다.업로드 요구사항을 충족하려면 다음 항목이 필요합니다.

애플리케이션 압축

Apple에서는 공증하기 위해 애플리케이션을 업로드하기 전에 압축해야 합니다. 압축하려면 다음을 수행하십시오.

  1. 터미널을 열고 애플리케이션이 있는 디렉토리로 이동합니다.

  2. 다음의 위치에 있는 커맨드를 실행합니다.
    • "application_name.app"은 빌드된 애플리케이션입니다.
    • "application_name.zip"은 생성할 압축 파일 이름입니다.
ditto -c -k --sequesterRsrc --keepParent "application_name.app" "application_name.zip"

이는 애플리케이션을 압축하고 압축한 파일을 애플리케이션과 동일한 디렉토리로 출력합니다.

애플리케이션 비밀번호 생성

애플리케이션을 공증하려면 Apple에는 특정 포맷으로 된 고유한 비밀번호가 필요합니다. 애플리케이션 비밀번호를 생성하려면 Apple ID가 있어야 합니다. Apple ID가 없는 경우 Apple Id 관리로 이동하여 ID를 만듭니다.

애플리케이션 비밀번호를 생성하는 방법에 대한 자세한 내용은 앱별 비밀번호 생성 방법을 참조하십시오.생성한 비밀번호는Xxxx-xxxx-xxxx-xxxx 포맷을 사용합니다.

공급자 약칭 가져오기

공급자 약칭은 개인이나 회사를 식별하는 단일 단어 레이블입니다. Apple은 Apple ID가 둘 이상의 조직과 연관될 때 공증할 조직을 결정하는 데 공급자 약칭을 사용합니다. 공급자 약칭을 가져오려면 다음을 수행하십시오.

  1. 터미널을 엽니다.
  2. 다음 위치에 있는 Xcode 커맨드를 실행합니다.
xcrun iTMSTransporter -m provider -u apple_id -p xxxx-xxxx-xxxx-xxxx

업로드 프로세스 시작

Apple에서 애플리케이션을 공증할 경우 공증 서버에 업로드해야 합니다. 업로드하려면 다음을 수행하십시오.

  1. 터미널을 열고 압축 애플리케이션이 있는 디렉토리로 이동합니다.
  2. 다음의 위치에 있는 커맨드를 실행합니다.
xcrun altool --notarize-app --username apple_id --password xxxx-xxxx-xxxx-xxxx --asc-provider provider_short_name --primary-bundle-id application_bundle_id --file application_name.zip

업로드를 성공한 경우 Apple은 요청 ID가 포함된 터미널에 리스폰스를 표시합니다. 이 요청 ID를 사용하여 요청 상태를 확인할 수 있습니다. 이는 서비스의 트래픽에 따라 공증 프로세스에 몇 시간씩 걸릴 수도 있기 때문에 유용합니다. 요청 상태를 확인하려면 다음을 수행하십시오.

  1. 터미널을 열고 압축 애플리케이션이 있는 디렉토리로 이동합니다.
  2. 다음의 위치에 있는 커맨드를 실행합니다.
xcrun altool --notarization-info request_id --username apple_id --password xxxx-xxxx-xxxx-xxxx --asc-provider provider_short_name

공증 프로세스가 완료되면 Apple은 Apple ID와 연결된 이메일 주소로 확인 메일을 보냅니다. 그러면 공증이 성공했는지 확인할 수 있습니다. 확인하려면 다음을 수행하십시오.

  1. 터미널을 열고 애플리케이션이 있는 디렉토리로 이동합니다.
  2. 다음의 위치에 있는 커맨드를 실행합니다.
    • application_name.app는 애플리케이션 이름입니다.
spctl -a -v application_name.app

공증을 성공한 경우 Apple이 애플리케이션을 수락하였으며 개발자 ID를 포함하고 있다는 점을 표시하는 메시지가 반환됩니다.

애플리케이션 스테이플링

애플리케이션을 공증한 후에는 애플리케이션을 실행하는 모든 기기에 코드 서명이 있고 악성 콘텐츠가 포함되어 있지 않은지 확인할 수 있습니다.그러나 기기는 온라인에서만 이 인증을 수행할 수 있습니다.인터넷에 연결되지 않은 기기에서 애플리케이션을 확인하려면 애플리케이션을 스테이플해야 합니다.자세한 내용은 배포에 티켓 스테이플을 참조하십시오.

애플리케이션을 스테이플하려면,

  1. 터미널을 열고 애플리케이션이 있는 디렉토리로 이동합니다.
  2. 다음 커맨드를 실행합니다. 여기서 "ApplicationName.app\"은 애플리케이션 이름입니다.xcrun stapler staple “ApplicationName.app”`.

Unity 클라우드 빌드를 사용한 공증

Unity 클라우드 빌드는 빌드 프로세스 중에 macOS 애플리케이션을 공증하고 스테이플할 수 있습니다.이를 위해서는 Unity에 다음이 필요합니다.

개발 중인 플랫폼에 따라 이러한 요구 사항 중 일부에 대한 프로세스가 다릅니다.Apple 기기에서 개발하는 경우 Xcode 커맨드 라인 툴을 사용하여 정보를 가져오고 관련 파일을 생성할 수 있습니다.Windows 또는 Linux에서 개발하는 경우 Apple 전용 Xcode 커맨드 라인 툴에 액세스할 수 없습니다.

사용 중인 플랫폼에 상관 없이 Apple ID, 비밀번호, 자격 파일을 가져오는 프로세스는 다음과 같이 플랫폼 애그노스틱입니다.

  1. Apple ID가 없는 경우 Apple ID 관리로 이동하여 ID를 만듭니다.
  2. 애플리케이션 비밀번호를 만듭니다.비밀번호 생성 방법에 대한 자세한 내용은 애플리케이션 비밀번호 생성을 참조하십시오.
  3. Apple 개발자 멤버십이 없는 경우 Apple 개발자에서 가입합니다.
  4. 애플리케이션에 대한 자격 파일을 만듭니다.자세한 방법은 자격을 참조하십시오.

이 단계를 완료한 후 다음을 수행합니다.

Apple 기기용 Unity 클라우드 빌드 공증

Apple 기기에서 개발하는 경우 Xcode 커맨드 라인 툴을 사용하여 Unity 클라우드 빌드를 사용한 공증에 나열된 요구 사항을 충족할 수 있습니다. 그런 다음 Unity 클라우드 빌드를 설정하여 빌드 프로세스의 일환으로 애플리케이션을 공증하고 스테이플할 수 있습니다. 요구 사항을 충족하려면 다음을 단계를 수행하십시오

  1. Unity 클라우드 빌드를 사용한 공증의 플랫폼 애그노스틱 단계를 따릅니다.
  2. 개발자 ID 인증서를 생성하여 키 체인에 추가합니다.자세한 방법은 서명 ID를 참조하십시오.
  3. 키체인에서 개발자 ID 인증서를 개인 정보 교환(.p12) 포맷의 파일로 익스포트합니다.자세한 방법은 Mac에서 키체인 액세스를 사용하여 키체인 항목 임포트 및 익스포트를 참조하십시오.
  4. 공급자 약칭을 가져옵니다.약칭을 가져오는 방법에 대한 자세한 내용은 공급자 약칭 가져오기를 참조하십시오.

요구 사항을 충족하고 나면 Unity 클라우드 빌드 공증 양식을 채워 제출합니다.

Windows 및 Linux 기기용 Unity 클라우드 빌드 공증

Windows 또는 Linux에서 개발하면서 macOS용 애플리케이션을 빌드, 공증 및 스테이플하려는 경우 Xcode 커맨드 라인 툴을 사용할 수 없습니다.빌드 프로세스의 일부로 애플리케이션을 공증하고 스테이플하기 위해 Unity 클라우드 빌드를 설정하려면 Unity 클라우드 빌드를 사용한 공증에 나열된 요구 사항을 충족해야 합니다.

  1. Unity 클라우드 빌드를 사용한 공증의 플랫폼 애그노스틱 단계를 따릅니다.
  2. 개발자 ID 인증서를 생성하고 다운로드합니다.자세한 방법은 서명 ID를 참조하십시오.참고:서명 ID의 마지막 단계는 macOS 사용자에게만 해당됩니다.
  3. 개발자 ID 인증서를 PKCS #12 개인 정보 교환(.p12) 파일 포맷으로 전환합니다.자세한 방법은 Windows 및 Linux에서 개발자 ID 인증서를 .p12 파일로 전환을 참조하십시오.
  4. Apple 개발자 계정을 통해 공급자 약칭을 가져옵니다. 공급자 약칭을 가져오려면 Membership Details로 이동하여 Team ID를 찾습니다. Team ID를 공급자 약칭으로 사용할 수 있습니다.

요구 사항을 충족하고 나면 Unity 클라우드 빌드 공증 양식을 채워 제출합니다.

Windows 및 Linux에서 개발자 ID 인증서를 .p12 파일로 전환

.p12 파일은 개발자 ID 인증서와 프라이빗 키를 번들로 묶습니다. 개발자 ID 인증서에서 만드는 방법은 다음과 같습니다.

  1. 커맨드 라인 인터페이스를 열고 개발자 ID 인증서 파일이 들어 있는 디렉토리로 이동합니다.개발자 ID 인증서를 다운로드하지 않은 경우, 서명 ID를 참조하십시오.

  2. 개발자 ID 인증서는 .cer 파일 포맷을 사용합니다. 이 파일을 .pem 파일 포맷으로 전환합니다. 전환하려면 다음의 위치에 있는 커맨드를 실행합니다.
    • developer_identity.cer은 전환할 개발자 ID 인증서입니다.
    • developer_identity.pem은 출력할 파일 이름이자 파일 타입입니다.

    openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM

  3. 새로운 프라이빗 키를 생성합니다. 프라이빗 키를 생성하려면 다음 위치에 있는 커맨드를 실행합니다.
    • mykey.key는 출력할 프라이빗 키 파일 이름입니다.

    openssl genrsa -out mykey.key 2048

  4. .p12 파일을 생성합니다. 이 파일을 생성하려면 다음의 위치에 있는 커맨드를 실행합니다.
    • mykey.key는 3단계에서 생성한 프라이빗 키 파일입니다.
    • developer_identity.pem은 2단계에서 생성한 .pem 파일입니다.

    openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iphone_dev.p12

Unity 클라우드 빌드 공증 양식 제출

Unity 클라우드 빌드를 사용한 공증에서 설명한 요구 사항을 충족하고 나면 다음의 단계를 따라 Unity 클라우드 빌드 공증을 설정합니다.

  1. Unity 클라우드 빌드를 사용하도록 프로젝트를 설정합니다.자세한 방법은 Unity 클라우드 빌드를 참조하십시오.
  2. 클라우드 빌드에 새로운 Mac Desktop 빌드 타겟을 생성합니다.
  3. Config 페이지로 돌아갑니다. 이제 이 페이지에는 Notarization 섹션이 포함되어 있습니다. 이 섹션을 열어 EDIT NOTARIZATION을 클릭합니다.
    설정 페이지에서 사용할 수 있는 섹션
  4. Notarization 플래그를 활성화합니다.이전에 동일한 조직에 대해 Unity 클라우드 빌드에 공증 자격 증명 세트를 제공한 적이 있는 경우 Credentials에서 해당 자격 증명을 선택할 수 있습니다.그렇지 않으면 Add new provisioning credentials를 선택합니다.
    자격 증명 다운로드
  5. 다음 사항을 제공합니다.
  6. 자격 증명을 저장합니다.
  7. Build History 페이지로 돌아가서 Mac 타겟에 대해 빌드를 시작합니다.
  8. 빌드를 성공하면 Unity 클라우드 빌드는 해당 결과를 공증하고 스테이플합니다.
    • 클라우드 빌드는 --deep --force --verify --verbose --timestamp --options runtime 플래그를 사용하여 codesign 커맨드를 실행합니다. 현재는 커스텀 플래그를 지정할 수 없습니다.
    • 사용자의 빌드 타겟 Environment Variables에서 환경 변수 FASTLANE_NOTARIZE_VERBOSE=true를 사용하여 공증으로 인한 추가적인 로그 출력을 사용할 수 있습니다.
  9. Unity 클라우드 빌드가 프로젝트를 빌드, 공증, 스테이플하고 나면 빌드가 포함된 압축 파일을 다운로드할 수 있습니다.
macOS 빌드 설정
Mac 앱 스토어에 애플리케이션 배포