Vorssaint签名指南:ad-hoc、自签与Developer ID三种方式详解
【免费下载链接】vorssaint-utilsFree and open-source macOS menu bar toolkit.项目地址: https://gitcode.com/GitHub_Trending/vo/vorssaint-utils
Vorssaint 是一款免费开源的 macOS 菜单栏工具箱,集成剪贴板管理、命令栏、系统监控、截图、窗口切换等实用功能。当你想本地构建或发布 Vorssaint时,代码签名(codesign)绕不开:它决定了应用能否稳定保留辅助功能、屏幕录制等权限。本指南将 Vorssaint 签名完整拆解为三种方式——ad-hoc、自签证书、Developer ID,并附一键配置步骤,新手也能快速上手。
三种签名方式对比:先选对再动手 🎯
Vorssaint 的构建脚本 build.sh 会按优先级自动选择签名身份:Developer ID → 自签身份 → ad-hoc,无需手动切换。三种方式的差异如下:
| 签名方式 | 成本 | 权限是否跨更新保留 | Gatekeeper 警告 | 适用场景 |
|---|---|---|---|---|
| ad-hoc | 零成本 | ❌ 每次构建都会重新提示授权 | ⚠️ 有 | 临时本地构建 |
| 自签证书 | 免费、离线 | ✅ 是 | ⚠️ 有 | 日常本地开发 |
| Developer ID | 需 Apple 开发者账号 | ✅ 是 | ✅ 无(配合公证) | 官方发布、对外分发 |
ad-hoc 签名:零配置,但每次构建都"失忆"
全新克隆仓库后直接运行./build.sh,由于系统钥匙串里没有任何签名身份,Vorssaint 会自动以ad-hoc 模式(codesign --sign -)签名。
- ✅ 优点:零配置、零成本,构建即刻可用
- ❌ 缺点:ad-hoc 签名的代码哈希每次构建都会变化,macOS 会把它当成"另一个应用",于是辅助功能、屏幕录制等权限每次重新构建后都要重新授权
如果你是偶尔试玩的本地构建,ad-hoc 足够;但只要你会反复构建,强烈建议花 10 秒换成自签方案。
自签证书一键配置:权限更新后不再丢失 🔑
仓库自带的 Tools/setup-signing.sh 可以一次性创建稳定的自签身份,只需运行:
./Tools/setup-signing.sh脚本完成的事情(免费、离线、可重复执行):
- 用 OpenSSL 生成一张10 年期自签证书(CN 为
Vorssaint Utils Signing,含codeSigning扩展密钥用途) - 在独立钥匙串
~/Library/Keychains/vorssaint-signing.keychain-db中导入证书,并允许codesign工具访问 - 将该钥匙串加入用户钥匙串搜索列表
之后每次./build.sh都会自动使用这个身份签名,所有本地构建拥有恒定的指定需求(designated requirement)——也就是说,macOS 授予的权限在反复重建后依然有效。
⚠️ 注意:自签身份名称刻意保持为
Vorssaint Utils Signing不改动,因为它是签名匹配的查找键,改名会让已授权的权限全部失效。自签不能替代 Apple 公证,分发给他人时首次启动仍会出现"未验证开发者"提示。
Developer ID 签名:官方分发的终极方案
官方发布流程使用的是 Apple 签发的Developer ID Application身份,配合三个环节:
- 签名:build.sh 检测到 Developer ID 后,自动附加三个关键参数:
--options runtime:启用加固运行时(公证的硬性要求)--timestamp:安全时间戳--entitlements:加载 Resources/Vorssaint.entitlements,声明 Apple Events、摄像头、麦克风权限
- 公证:Tools/notarize.sh 将应用(或 DMG)提交给 Apple notarytool 服务并装订票据
- 打包:Tools/make-dmg.sh 封装出带安装界面的 DMG,分发后 Gatekeeper 无任何安全警告
💡 加固运行时默认会拦截 Apple Events、摄像头与音频输入,而 Vorssaint 的访达剪切粘贴、相机预览、录音功能正好依赖它们,所以 entitlements 文件逐条恢复了这些能力(详见 Resources/Vorssaint.entitlements 内的注释)。
CI 环境配置:两个脚本管好密钥与公证
在持续集成环境中,签名证书与公证凭据通过环境变量注入:
- 签名证书:Tools/ci-setup-signing.sh 读取
SIGNING_CERT_P12(base64 编码的证书包)与SIGNING_CERT_PASSWORD,导入到 CI 临时钥匙串;未配置时自动降级为 ad-hoc 构建 - 公证凭据:Tools/notarize.sh 需要三个变量——
NOTARY_API_KEY_P8、NOTARY_KEY_ID、NOTARY_ISSUER_ID;缺失时公证步骤安静跳过,普通构建照常成功
完整的权限配置与发布流程说明可参考 CONTRIBUTING.md 的 "Stable signing" 章节。
常见问题:签名后权限丢失或启动被拦截怎么办?
Q:重新构建后权限失效了?本地构建没有稳定签名身份时就会发生。运行一次 Tools/setup-signing.sh 即可根治;若授权列表中出现旧条目,先用减号按钮删除再重新授权(详见 docs/TROUBLESHOOTING.md)。
Q:Gatekeeper 提示"未验证的开发者"?自签或 ad-hoc 构建属于正常现象:在访达中右键 → 打开并确认,或前往"系统设置 → 隐私与安全性"点击"仍要打开"。
Q:如何验证签名是否有效?对应用包执行:
codesign --verify --deep --strict /Applications/Vorssaint.app无输出即代表签名完整有效。build.sh与make-dmg.sh打包前都会自动执行这一步校验。
【免费下载链接】vorssaint-utilsFree and open-source macOS menu bar toolkit.项目地址: https://gitcode.com/GitHub_Trending/vo/vorssaint-utils
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考