Mac提示“签名无效”实为Gatekeeper校验失败,需先用codesign -dv诊断签名状态,再清除quarantine属性,最后用pkgutil --sign -重签名.pkg文件,而非codesign;验证成功后即可正常安装。

Mac提示“签名无效”的安装包(如 .pkg 文件)无法继续安装,是因为 Gatekeeper 在验证时发现签名链断裂、证书过期或缺少公证票据,而非文件本身损坏;必须通过终端用 codesign 工具重建可信签名,否则双击或命令行安装均会失败。
确认安装包签名状态
先不急着重签,用终端快速定位问题根源:打开终端,输入 codesign -dv --verbose=4 /path/to/your.pkg(把 /path/to/your.pkg 替换为实际路径,可直接将 .pkg 文件拖入终端补全),重点看三处:【Authority】 字段是否含 Developer ID Installer,【Notarized】 是否为 yes,以及 Timestamp 是否明显早于当前日期(例如显示 2024 年但今天是 2026 年 9 月)。
若输出中出现 code object is not signed at all,说明压根没签名,不属于“无效”,后续步骤不适用。
清除下载隔离属性
很多“签名无效”其实是假象——真正拦路的是 com.apple.quarantine 属性。它由 Safari 或 Chrome 下载自动添加,会强制触发 Gatekeeper 全流程校验,哪怕签名完好也会报错。
运行:sudo xattr -d com.apple.quarantine /path/to/your.pkg
把 .pkg 文件直接拖进终端,确保路径准确;输密码时无光标反馈,输完直接回车。这一步不做,后面重签也白搭。
执行重签名操作
macOS 的 .pkg 安装包不支持像 .app 那样用 --deep 一键重签,必须拆解为 pkg 内部组件逐层处理。但对绝大多数用户而言,最简有效路径是:用 ad-hoc 方式对整个包容器重新签名,绕过证书依赖。
第一步:确保已安装 Xcode 命令行工具。终端运行 xcode-select --install,弹窗点“安装”,完成后再执行 codesign --version 验证输出版本号。
第二步:执行重签名命令:sudo pkgutil --sign - /path/to/your.pkg
注意:这里必须用 pkgutil --sign,不是 codesign;- 表示使用 ad-hoc 签名,无需本地证书;拖入 .pkg 路径比手打更可靠,避免空格或中文路径转义错误。
第三步:验证是否成功。再次运行 codesign -dv --verbose=4 /path/to/your.pkg,此时 Authority 应显示 adhoc,且不再报 invalid signature。
安装已重签名的包
双击该 .pkg 文件,系统不再弹出“无法验证完整性”警告,而是直接进入标准安装向导。
若仍拦截,说明上一步未生效——检查是否漏掉 sudo 权限,或路径中存在隐藏字符;也可尝试在终端用 sudo installer -pkg /path/to/your.pkg -target / 强制安装。

















