news 2026/9/2 17:44:27

Vorssaint签名指南:ad-hoc、自签与Developer ID三种方式详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vorssaint签名指南:ad-hoc、自签与Developer ID三种方式详解

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

脚本完成的事情(免费、离线、可重复执行):

  1. 用 OpenSSL 生成一张10 年期自签证书(CN 为Vorssaint Utils Signing,含codeSigning扩展密钥用途)
  2. 在独立钥匙串~/Library/Keychains/vorssaint-signing.keychain-db中导入证书,并允许codesign工具访问
  3. 将该钥匙串加入用户钥匙串搜索列表

之后每次./build.sh都会自动使用这个身份签名,所有本地构建拥有恒定的指定需求(designated requirement)——也就是说,macOS 授予的权限在反复重建后依然有效。

⚠️ 注意:自签身份名称刻意保持为Vorssaint Utils Signing不改动,因为它是签名匹配的查找键,改名会让已授权的权限全部失效。自签不能替代 Apple 公证,分发给他人时首次启动仍会出现"未验证开发者"提示。

Developer ID 签名:官方分发的终极方案

官方发布流程使用的是 Apple 签发的Developer ID Application身份,配合三个环节:

  1. 签名:build.sh 检测到 Developer ID 后,自动附加三个关键参数:
    • --options runtime:启用加固运行时(公证的硬性要求)
    • --timestamp:安全时间戳
    • --entitlements:加载 Resources/Vorssaint.entitlements,声明 Apple Events、摄像头、麦克风权限
  2. 公证:Tools/notarize.sh 将应用(或 DMG)提交给 Apple notarytool 服务并装订票据
  3. 打包: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_P8NOTARY_KEY_IDNOTARY_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.shmake-dmg.sh打包前都会自动执行这一步校验。

【免费下载链接】vorssaint-utilsFree and open-source macOS menu bar toolkit.项目地址: https://gitcode.com/GitHub_Trending/vo/vorssaint-utils

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 17:43:45

微信报名工具小程序怎么做?在微信里发一张扫码即填的报名表

微信报名工具小程序,就是在微信里打开、扫码即填的轻量报名应用,常用于活动招募、培训登记、社群入群。要做最省事,推荐用龙艺秀这类零代码工具——不用写代码、不用上架审核,几分钟搭出可分享的微信报名工具小程序。本文以龙艺秀…

作者头像 李华
网站建设 2026/9/2 17:44:06

tbc-db详解:魔兽2.4.3模拟器内容数据库与客户端补丁的协同机制

简介:面向《魔兽世界》燃烧的远征模拟器服开发者,这份 TBC-DB 内容数据库资源服务于 CMaNGOS / mangos-tbc 核心,仅与游戏客户端 2.4.3(内部版本 8606)兼容。数据库以 SQL 脚本形式集中管理副本、任务、生物、物品等游…

作者头像 李华
网站建设 2026/9/1 10:57:18

Java图书管理系统实战:从三层架构到数据库设计完整指南

很多Java初学者在学完基础语法后,都会陷入一个迷茫期:知道 if-else 、 for 循环,也了解类和对象,但就是不知道如何把这些零散的知识点串联起来,做出一个“像样”的东西。网上的“图书管理系统”项目看似简单&#…

作者头像 李华
网站建设 2026/9/2 14:34:13

MCGS与OPC通讯实战:从DCOM配置到故障排查全解析

简介:本资源是面向工业自动化工程师、SCADA系统开发人员及高校控制类专业学习者的MCGS与OPC通信实战配置包,解决跨厂商设备数据集成与实时监控系统搭建中的核心通讯难题。压缩包共15个文件,涵盖MCGS工程文件(.mcg)、设…

作者头像 李华