"서명 안 한 앱은 '덜 다듬어진' 게 아냐 — 요즘 OS한텐 '악성코드일 수도'고, 그에 맞게 행동해."
서명이 선택이 아닌 이유
요즘 운영체제는 서명 안 한 코드를 경계해. macOS에선 Gatekeeper가 서명 안 한 앱을 무서운 다이얼로그로 막거나(아예 열기를 거부), Windows에선 SmartScreen이 사용자를 경고해 떼어놔. 코드 서명은 앱을 누가 게시했는지 증명하는 암호학적 신원을 붙여서, OS — 와 사용자 — 가 믿을 수 있게 해. 앱 스토어 밖으로 배포하는 건 뭐든 서명이 사실상 필수지 있으면 좋은 게 아냐.
macOS는 두 단계가 필요해: 서명 + Notarize
macOS가 제일 엄격해. 먼저 Developer ID 인증서로 서명해(Apple Developer 계정, ~$99/년). 그다음 notarize해: 서명된 앱을 Apple에 업로드하면 악성코드를 스캔하고 앱에 'staple'할 티켓을 발급해. notarization 없이는 서명된 앱도 현재 macOS에서 기본 차단돼. Tauri가 Apple 자격증명을 환경 변수로 주면 notarization을 대신 돌려줘 — 보통 CI에서, 절대 하드코딩 안 하고.
Windows와 CI 현실
Windows 서명은 코드 서명 인증서를 써(점점 EV나 클라우드-HSM 기반). Linux는 AppImage/deb엔 보통 서명이 필요 없지만, 저장소는 자기 서명이 있어. 이 모든 것의 실용 패턴: 서명 신원이랑 Apple 자격증명이 CI 시크릿으로 살고, 릴리스 워크플로가 자동으로 서명하고 notarize해. 릴리스가 서명 신원의 유일한 사본을 든 개발자 한 명의 노트북에 의존하길 절대 원하지 않아.