사전준비
인증서를 준비한다. 자세한 내용은 아래에
자동업데이트 구현. 자세한 내용은 아래에
Windows 인증서 저장소에서 인증서 확인
인증서가 올바르게 설치되었는지 확인하려면 certmgr.msc를 실행하여 Windows 인증서 저장소에서 인증서를 확인한다. "개인" -> "인증서" 항목에 인증서가 있어야 한다.
electron-builder에 코드 서명 설정 추가
package.json의 build, win 부분을 아래와 같이 구성해준다.
{
"build": {
"appId": "com.example.yourapp",
"win": {
"target": "nsis",
"signingHashAlgorithms": ["sha256"],
"certificateSubjectName": "Your Company Name",
"rfc3161TimeStampServer": "http://timestamp.digicert.com"
}
}
}
- certificateSubjectName: EV 인증서에 등록된 회사 이름을 사용한다.
- rfc3161TimeStampServer: 타임스탬프 서버 URL을 지정한다. DigiCert의 타임스탬프 서버를 사용한다.
인증서 비밀번호 입력 설정
set CSC_KEY_PASSWORD=your_cert_password
토큰을 사용할 때 입력하는 암호
인증서를 통한 코드 서명 명령 실행
Electron Builder는 Windows에서 signtool.exe를 사용해 서명한다. EV 인증서를 사용한 코드 서명을 수행하려면, electron-builder가 signtool을 호출할 때 USB 토큰을 인식하도록 구성해야 한다.
npx electron-builder --win
electron-builder 옵션에 --win을 사용
중요 사항 (정리)
- USB 토큰 연결 및 드라이버 설치: USB 토큰이 시스템에 연결되어 있고, 해당 드라이버(SafeNet Authentication Client 등)가 올바르게 설치되어 있어야 한다.
- 인증서 접근 권한: 인증서가 Windows 인증서 저장소에 설치되어 있어야 하며, certificateSubjectName에 정확한 회사 이름을 입력해야 한다.
- 환경 변수 설정: CSC_KEY_PASSWORD가 올바르게 설정되어 있어야 한다.
이슈
이렇게 하면 명령어 입력 시 서명이 된 앱이 빌드된다.
근데 나는 앱 서명을 하기 전에 기존 자동 배포, 업데이트 시스템을 github action을 사용해서 s3에 업로드 되도록 구축해두었었다. 근데 문제는 윈도우 EV 인증서는 usb 토큰이라 github runner에서 사용할수가 없다,,,
그래서 결국 macos 만 github runner를 사용하고, 윈도우는 로컬 피씨에서 자동 배포 되도록 스크립트를 짜서 사용했다.
electron-builder의 deploy 사용하려했다가 acl 옵션을 지워도 자꾸 acl 오류가 나서 그냥 스크립트 짜서 aws에 배포하게 함
'🩵electron' 카테고리의 다른 글
apple 개발자 계정으로 macOS application 코드서명+공증 하기(code sign, notarization) (0) | 2024.07.21 |
---|---|
windows 설치파일 digitcert로 전자서명 하기 (0) | 2024.07.17 |
직접 개발한 exe 실행파일을 실 유저에게 배포하려면? (코드 전자 서명) (0) | 2024.05.27 |
electron s3 github actions 자동 배포 및 autoUpdater 설정 (0) | 2024.05.07 |
electron 디컴파일 해보기, 방지하기 (2) | 2024.04.29 |