본문 바로가기
#컴퓨터 과학 [Computer Science]/운영체제 (Operating System)

[OS - 🍎 macOS] macOS Code Signing

by cy_mos 2022. 2. 23.
반응형
카테고리 게시글 작성 날짜 게시글 최근 수정 날짜 작성자
Operating System 2022.02.23. 21:07 2022.02.23. 21:07 Dev.Yang

 

About macOS Code Signing

 

코드 서명 (Code Signing) 애플리케이션이 변조되거나 변경되지 않았음을 확인하도록 설계된 macOS security technology 절차를 말합니다. 코드 서명 작업은 개발자가 Apple이 발급한 개발자 ID 인증서를 사용하여 코드 서명 작업을 수행하며, 코드 서명 된 애플리케이션에 대한 서명을 확인하면 사용자는 개발자의 소프트웨어가 제작 및 서명된 이후로 변조되지 않았음을 확인할 수 있습니다.

 

[좌] macOS 10.15 (Catalina) 이상의 운영체제에서 코드 서명이 되어있지 않은 경우, [우] 코드 서명 및 공증 작업이 수행되어 있는 경우

 

macOS 10.15 (Catalina) 이상의 운영체제의 경우에는 App Store 외부에서 배포된 모든 앱은 반드시 Apple이 발급한 개발자 ID 인증서(개인 키와 통합됨)를 사용하여 서명되어야 하며, 기본 Gatekeeper 설정으로 실행하려면 Apple의 공증을 받아야 합니다. 사내에서 개발한 앱도 Apple이 발급한 개발자 ID로 서명하여 사용자가 해당 앱의 무결성을 확인할 수 있어야 합니다.


🛠 코드 서명 (Code Signing) 과정

  1. 애플리케이션에 코드 서명 작업을 위해서 Apple Developer Program 가입합니다.
  2. https://developer.apple.com 접속하여 Developer-ID 인증서를 생성합니다. 생성 된 인증서를 Keychain Access에 저장합니다.
  3. 코드 서명 (Code Signing) 작업을 수행하는 PC에서 시스템 환경 설정 -> Apple ID 메뉴를 통하여 iCloud 로그인 작업을 수행합니다.
  4. 작업 대상에 따라 아래의 명령어를 통하여 코드 서명 (Code Signing) 작업을 수행합니다. 작업 중 정상적으로 코드 서명이 되지 않는 경우에는 find [HERE NAME].[EXTENSION] | xargs xattr -xc 명령어를 통하여 현재 작업 대상에 대한 정보를 삭제하고 수행합니다.

 

// 코드사인 대상이 .dylib 형태의 작업 대상인 경우
$ codesign --verbose --timestamp -s "[DeveloperID]" ~/[HERE NAME].dylib

// 코드사인 대상이 .app 형태의 작업 대상인 경우
$ codesign --verbose --timestamp -s "[DeveloperID]" --options=runtime ~/[HERE NAME].app

// 코드사인 대상이 .framework 형태의 작업 대상인 경우
$ codesign --verbose --deep --timestamp -s "[DeveloperID]" --options=runtime ~/[HERE NAME].framework

🚀 REFERENCE

더보기
반응형

댓글