본 내용은 MacOS 환경에서 일렉트론빌드 사용시 별도 코드사인 인증서를 가지고 서명 처리하는 부분에 대해 다루고 있다.
사실 윈도우의 경우에도 별반 다를게 없고, 내용중엔 윈도우 관련 키값을 별도로 표시해두었으니 참고하여도 좋을 듯 싶다.
Code Sign (코드사인) 인증서란 ?
프로그램 코드의 무결성을 보증하기 위한 전자서명이다.
코드사인 인증서는 제 3자에 의해 변경되거나 손상되지 않았음을 확인하는 방법으로 응용프로그램, Cab파일 서명, 드라이버서명, WHQL등 디지털 서명하는데 사용된다.
인증서를 통해 서명,회사 이름, 원하는 경우 시간서명이 포함되며 코드사이닝 인증서는 사용자가 설치 또는 시작 시 경고 메시지를 받지 못하도록 하여 보안에 이상적이다. (인증서 종류에 따라서는 맥의 경우에는 즉각적으로 경고메세지를 없어지진 않는다.)
설명은 여기까지 하고,
내 경우 회사 프로그램을 구현하기 위해 한국전자인증에서 발급받아 사용중에 있다.
전자서명을 위한 코드사인인증서를 발급해주는 기관이 여러 곳 있으니, 개인적으로 사용을 하고자하는 경우에는 맥유저라면 xcode 설치 후 apple developer (무료)로 진행, 프로젝트 만들게 되면 대게 개인용 인증서가 발급되는것으로 알고 있다.
electron-builder의 경우 아래와 같이 안내를 돕고 있다.
- Apple 개발자 프로그램 에 등록 (연간 사용료 필요)
- Xcode 다운로드 및 설치 - macOS를 실행하는 컴퓨터가 필요합니다.
- 서명 인증서 생성, 다운로드 및 설치
뭐 어쨋든 이번 문서는 개인용이 아닌, 업무를 진행하면서 회사에서 별도로 구매한 코드사인 인증서를 가지고 진행을 완수하기 위함이니 개인용은 그만 알아보고 이제 적용방법에 대해 알아보자
적용방법
- 인증기관에서 발급받은 인증서파일을 컴퓨터 내부 특정 폴더에 저장한다.
- (맥) 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 |