macos 下 electron 打包证书如何生成?

如题

在 macOS 下,Electron 应用的打包通常需要一个 Apple Developer 证书(用于代码签名)和一个 Apple Developer ID(用于发布到 Mac App Store 或 Notarization)。以下是生成和使用证书的步骤:


1. 注册 Apple Developer 账号

如果尚未注册,前往 Apple Developer 注册,并申请 Apple Developer Program(每年 $99)。


2. 生成证书

你需要申请 Apple 的代码签名证书:
1. 打开“钥匙串访问” (Keychain Access)
2. 在顶部菜单栏选择 钥匙串访问 -> 证书助理 -> 请求证书
3. 在弹出的窗口中:
- 用户电子邮件地址:填写你的 Apple ID 邮箱
- 选择 存储到磁盘
4. 生成 .certSigningRequest (CSR) 文件


3. 在 Apple Developer 网站申请证书

  1. 访问 Apple Developer Certificates 页面
  2. 创建以下证书:
    • 开发测试用:Mac Development
    • 正式发布用:Mac App Distribution
  3. 上传之前生成的 .certSigningRequest 文件
  4. 下载生成的 .cer 文件并双击导入 钥匙串访问

4. 申请 Apple Notarization(公证)

如果你要发布 Electron 应用(不只是开发测试),你需要:
1. 在 Apple Developer Portal 创建 Apple Developer ID Application 证书
2. 申请 App-Specific Password
- 登录 Apple ID
- 创建 App-Specific Password
3. 配置 electron-builder(示例 package.json):

   {
     "build": {
       "mac": {
         "identity": "Developer ID Application: Your Name (Team ID)"
       }
     }
   }
  1. 运行 electron-builder 进行代码签名:
   export APPLE_ID="your-apple-id@example.com"
   export APPLE_ID_PASSWORD="your-app-specific-password"
   electron-builder --mac

5. 完成公证

如果要发布 DMG/ZIP 格式,需要向 Apple 进行 Notarization:

xcrun altool --notarize-app -t osx -f YourApp.dmg --primary-bundle-id com.your.app -u "your-apple-id@example.com" -p "your-app-specific-password"

等待公证完成后,运行:

xcrun stapler staple YourApp.dmg

这样应用就能顺利安装,不会出现 macOS Gatekeeper 的阻止弹窗。


总结

  • 开发测试:使用 Mac Development 证书进行签名
  • 正式发布:使用 Mac App Distribution 证书 + Apple Notarization
  • 避免未签名警告:务必完成 notarization

这样你的 Electron 应用就可以安全发布到 macOS 了 🚀