如何对shell脚本签名公证以在Mac OSX系统上正常运行?
macOS单个Shell脚本签名及公证操作步骤
前置准备
- 拥有有效Apple Developer Program会员资格
- 已安装Xcode命令行工具,未安装可执行
xcode-select --install完成安装 - 钥匙串中已配置从苹果开发者后台申请的Developer ID Application类型签名证书
第一步:为脚本添加执行权限并签名
- 先赋予脚本可执行权限:
chmod +x test.command
- 执行签名命令,必须启用硬化运行时(公证强制要求):
codesign --sign "你的Developer ID Application证书完整名称" --force --options runtime test.command
- 验证签名有效性:
codesign -dv --verbose=4 test.command
输出信息中包含你的开发者证书信息即代表签名成功。
第二步:提交公证
- 单个脚本无法直接提交公证,需先打包为Zip压缩包:
zip test.zip test.command
- 使用
notarytool提交公证,需提前在Apple ID后台生成应用专用密码:
xcrun notarytool submit test.zip --apple-id "你的开发者Apple ID" --team-id "你的开发者团队ID" --password "你的应用专用密码" --wait
命令返回Accepted状态即代表公证通过。
3. 给脚本绑定公证凭证,离线环境也可正常识别公证结果:
xcrun stapler staple test.command
- 验证最终结果:
spctl -a -v test.command
输出包含accepted即代表整个流程完成,分发后用户无需额外在安全设置中放行即可直接双击运行。
注意事项
如果你的脚本需要调用特殊系统权限、访问受保护的用户目录等能力,需要额外配置对应的 entitlements 权限文件,签名时添加--entitlements 权限文件路径参数导入即可。
内容的提问来源于stack exchange,提问作者link89
相关产品推荐
相关产品推荐

