Electron-builder Code Sign 인증

2023. 5. 4. 16:37· 자바스크립트/Electron Framework

본 내용은 MacOS 환경에서 일렉트론빌드 사용시 별도  코드사인 인증서를 가지고 서명 처리하는 부분에 대해 다루고 있다. 
사실 윈도우의 경우에도 별반 다를게 없고, 내용중엔 윈도우 관련 키값을 별도로 표시해두었으니 참고하여도 좋을 듯 싶다.

Code Sign (코드사인) 인증서란 ?

프로그램 코드의 무결성을 보증하기 위한 전자서명이다.
코드사인 인증서는 제 3자에 의해 변경되거나 손상되지 않았음을 확인하는 방법으로 응용프로그램, Cab파일 서명, 드라이버서명, WHQL등 디지털 서명하는데 사용된다.
인증서를 통해 서명,회사 이름, 원하는 경우 시간서명이 포함되며 코드사이닝 인증서는 사용자가 설치 또는 시작 시 경고 메시지를 받지 못하도록 하여 보안에 이상적이다. (인증서 종류에 따라서는 맥의 경우에는 즉각적으로 경고메세지를 없어지진 않는다.) 

설명은 여기까지 하고,

내 경우 회사 프로그램을 구현하기 위해 한국전자인증에서 발급받아 사용중에 있다. 
전자서명을 위한 코드사인인증서를 발급해주는 기관이 여러 곳 있으니, 개인적으로 사용을 하고자하는 경우에는 맥유저라면 xcode 설치 후 apple developer (무료)로 진행, 프로젝트 만들게 되면 대게 개인용 인증서가 발급되는것으로 알고 있다. 

electron-builder의 경우 아래와 같이 안내를 돕고 있다.

  1. Apple 개발자 프로그램 에 등록 (연간 사용료 필요)
  2. Xcode 다운로드 및 설치 - macOS를 실행하는 컴퓨터가 필요합니다.
  3. 서명 인증서 생성, 다운로드 및 설치

뭐 어쨋든 이번 문서는 개인용이 아닌, 업무를 진행하면서 회사에서 별도로 구매한 코드사인 인증서를 가지고 진행을 완수하기 위함이니 개인용은 그만 알아보고 이제 적용방법에 대해 알아보자 

 

적용방법

  • 인증기관에서 발급받은 인증서파일을 컴퓨터 내부 특정 폴더에 저장한다.  

/Users/god-logger/codeSign/cert.pfx

  • (맥) launchPad - 기타- 키체인 접근 

  •  pfx 파일을 시스템 및 로그인 쪽에 추가 (드래그&드랍)

  • Apple worldwide developer / Digicert / 회사명(인증서에 기입한 회사) 3개의 인증서 모두 시스템초기설정으로 처리

  • DigiCert Trust G4 Code Signing ~~ 인증서 열어서, 방식 #2 에 있는 링크 클릭하여 다운로드 후 실행, 등록 처리 

한국전자인증의 경우 별도 설정하라고 가이드를 준 부분.  다른 인증서는 불필요할 수 있다.

  • (맥/리눅스) 인증기관에서 문자나 메일이나 어떤 수단으로든 보낸 비밀번호와 cert.pfx 파일 경로를 환경변수에 넣는다. 
#.zshrc 파일 편집
$> sudo nano ./.zshrc

################### .zshrc ####################

export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
source $ZSH/oh-my-zsh.sh

export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
export PATH="/opt/homebrew/opt/pyqt@5/bin:$PATH"
export PATH="/opt/homebrew/opt/ruby@2.7/bin:$PATH"

# CodeSign 관련 환경변수
export WIN_CSC_LINK=/Users/god-logger/codeSign/cert.pfx
export WIN_CSC_KEY_PASSWORD=비밀번호
export CSC_LINK=/Users/god-logger/codeSign/cert.pfx
export CSC_KEY_PASSWORD=비밀번호

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"


################### .zshrc ####################

# 적용 
$> source ./.zshrc

위 코드처럼, WIN_CSC_LINK , WIN_CSC_KEY , CSC_LINK , CSC_KEY 4개의 변수를 지정해주어야 한다. 

  • (윈도우) 내PC - 속성 - 고급시스템설정 - 환경변수 - 새 시스템 환경변수 등록, 혹은 사용자 환경변수 등록 

고급 탭 - 환경변수
새로 만들기 클릭 후 키/값 추가
예시

WIN_* 변수의 경우 윈도우즈용 빌드시 코드사인할때 사용되는 키값이며, CSC_*의 경우 리눅스 및 맥용 빌드할때 사용된다. 
Mac에서 윈도우용 프로그램을 배포하고 싶은 경우에는 WIN_* 관련 변수 2개를 꼭 포함시켜야한다.

참고) 반면 윈도우에서는 맥용 프로그램 빌드는 아쉽게도 안된다.
  • Electron-builder 를 통해 package (build) 처리하면 아래와 같은 로그와 함께 잘 CodeSign이 들어가고 있는걸 확인할 수 있다.
$ /Users/god-logger/project/client/node_modules/.bin/electron-builder --config ./buildConfig.json --mac --arm64 --linux --win --x64 -p always
  • electron-builder  version=24.3.0 os=22.4.0
  • loaded configuration  file=/Users/god-logger/project/client/buildConfig_prd.json
  • writing effective config  file=/Volumes/외장SSD/build/prd/builder-effective-config.yaml
  • executing @electron/rebuild  arch=x64 version=24.1.3 appDir=/Users/god-logger/project/client
  • packaging       platform=darwin arch=x64 electron=24.1.3 appOutDir=/Volumes/외장SSD/build/prd/mac
  • signing         file=/Volumes/외장SSD/build/prd/mac/ClientTool.app identityName=God-Logger Co., Ltd. identityHash=**************************************** provisioningProfile=none
  • building        target=DMG arch=x64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0.dmg
  • building        target=macOS zip arch=x64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-mac.zip
  • executing @electron/rebuild  arch=arm64 version=24.1.3 appDir=/Users/god-logger/project/client
  • Detected arm64 process, HFS+ is unavailable. Creating dmg with APFS - supports Mac OSX 10.12+
  • packaging       platform=darwin arch=arm64 electron=24.1.3 appOutDir=/Volumes/외장SSD/build/prd/mac-arm64
  • signing         file=/Volumes/외장SSD/build/prd/mac-arm64/ClientTool.app identityName=God-Logger Co., Ltd. identityHash=**************************************** provisioningProfile=none
  • building block map  blockMapFile=/Volumes/외장SSD/build/prd/ClientTool-0.1.0.dmg.blockmap
  • building block map  blockMapFile=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-mac.zip.blockmap
  • building        target=DMG arch=arm64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-arm64.dmg
  • building        target=macOS zip arch=arm64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-arm64-mac.zip
  • Detected arm64 process, HFS+ is unavailable. Creating dmg with APFS - supports Mac OSX 10.12+
  • executing @electron/rebuild  arch=x64 version=24.1.3 appDir=/Users/god-logger/project/client
  • packaging       platform=linux arch=x64 electron=24.1.3 appOutDir=/Volumes/외장SSD/build/prd/linux-unpacked
  • building        target=AppImage arch=x64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0.AppImage
  • cannot map macOS category to Linux. If possible mapping is known for you, please file issue to add it.  macCategory=public.app-category.business
  • application Linux category is set to default "Utility"  reason=linux.category is not set and cannot map from macOS docs=https://www.electron.build/configuration/linux
  • executing @electron/rebuild  arch=arm64 version=24.1.3 appDir=/Users/god-logger/project/client
  • packaging       platform=linux arch=arm64 electron=24.1.3 appOutDir=/Volumes/외장SSD/build/prd/linux-arm64-unpacked
  • building        target=AppImage arch=arm64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-arm64.AppImage
  • executing @electron/rebuild  arch=x64 version=24.1.3 appDir=/Users/god-logger/project/client
  • packaging       platform=win32 arch=x64 electron=24.1.3 appOutDir=/Volumes/외장SSD/build/prd/win-unpacked
  • building block map  blockMapFile=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-arm64.dmg.blockmap
  • signing         file=/Volumes/외장SSD/build/prd/win-unpacked/ClientTool.exe certificateFile=/Users/god-logger/project/cert.pfx
  • building        target=zip arch=x64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-win.zip
  • executing @electron/rebuild  arch=arm64 version=24.1.3 appDir=/Users/god-logger/project/client
  • packaging       platform=win32 arch=arm64 electron=24.1.3 appOutDir=/Volumes/외장SSD/build/prd/win-arm64-unpacked
  • signing         file=/Volumes/외장SSD/build/prd/win-arm64-unpacked/ClientTool.exe certificateFile=/Users/god-logger/project/cert.pfx
  • building block map  blockMapFile=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-arm64-mac.zip.blockmap
  • building        target=zip arch=arm64 file=/Volumes/외장SSD/build/prd/ClientTool-0.1.0-arm64-win.zip
  • building        target=nsis file=/Volumes/외장SSD/build/prd/ClientTool Setup 0.1.0.exe archs=x64, arm64 oneClick=true perMachine=true
  • signing         file=/Volumes/외장SSD/build/prd/win-unpacked/resources/elevate.exe certificateFile=/Users/god-logger/project/cert.pfx
  • signing         file=/Volumes/외장SSD/build/prd/win-arm64-unpacked/resources/elevate.exe certificateFile=/Users/god-logger/project/cert.pfx
  •   Signing NSIS uninstaller  file=/Volumes/외장SSD/build/prd/__uninstaller-nsis-project-client.exe certificateFile=/Users/god-logger/project/cert.pfx
  • signing         file=/Volumes/외장SSD/build/prd/ClientTool Setup 0.1.0.exe certificateFile=/Users/god-logger/project/cert.pfx
  • building block map  blockMapFile=/Volumes/외장SSD/build/prd/ClientTool Setup 0.1.0.exe.blockmap
✨  Done in 292.58s.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'자바스크립트 > Electron Framework' 카테고리의 다른 글

Electron 클라이언트 중복 실행 방지 방법  (0) 2023.10.06
Electron VsCode 에서 Debugging(디버깅) 하는 법  (0) 2023.09.05
Sqlite3 포함 빌드시 code sign 에러 발생  (0) 2023.05.03
별도 서버를 활용한 Electron AutoUpdater 적용  (0) 2023.04.27
'자바스크립트/Electron Framework' 카테고리의 다른 글
  • Electron 클라이언트 중복 실행 방지 방법
  • Electron VsCode 에서 Debugging(디버깅) 하는 법
  • Sqlite3 포함 빌드시 code sign 에러 발생
  • 별도 서버를 활용한 Electron AutoUpdater 적용
신·기록
신·기록
개발 관련 이슈 해결방안, 활용 방법, 제품 리뷰 등을 기록하는 개인 블로그
신·기록
문제해결집
신·기록
전체
오늘
어제
  • 분류 전체보기 (175)
    • 뉴스 (9)
    • 제품 리뷰 (19)
    • 운영체제 및 서버 (53)
      • Linux (27)
      • Mac OS (8)
      • Proxmox (6)
      • Nginx (2)
      • Raspberry Pi (3)
      • Odroid M2 (4)
    • AI 인공지능 (7)
    • 모바일 (4)
      • Flutter (1)
      • 안드로이드 (1)
    • 데이터베이스 (11)
      • Mysql (9)
    • 자바 (11)
      • Spring Framework (9)
    • 자바스크립트 (19)
      • Node JS (4)
      • Electron Framework (10)
      • React & Next.js (4)
    • 클라우드 플랫폼 (4)
    • 학습 (4)
    • 이슈 (21)
    • 비디오게임 에뮬레이터 (2)
    • CPU 성능 순위 (1)
    • 그래픽카드 성능 순위 (1)
    • 기타 (7)

블로그 메뉴

  • 이용 원칙
  • 태그
  • 방명록

인기 글

최근 글

08-06 00:12
관련 문의는 방명록에 부탁드립니다.
본 블로그의 스킨 출처는 아래와 같습니다.
hELLO · Designed By 정상우.v4.2.2
신·기록
Electron-builder Code Sign 인증
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.