关于Mac上签名对运行时影响的研究
(2022-11-04 17:14:01)
标签:
codesignoptionsruntimearm64x86_64--master-disable |
分类: 计算机与 Internet |
先说基础知识
1. Intel CPU为基础的x86_64,应该永远可以没有签名时被启动(只要用户想)
2. ARM 永远需要签名正确。
最近有同事说x86_64遇到签名问题,启动运行不了,因为加载不了未签名的文件。
理论上不管可执行文件有没有签名,都应该不影响启动。
但事实不能加载,报签名错不能加载,开始考虑是服务器上自动签名,把可执行签上了entitlement。
但实际研究发现,是options=runtime的影响,加了这个就是强制所有被加载模块验证签名。
相当于强制把x86_64变成了arm64.
第二个case是,可执行完全没签名,新机器12.6报启动不了,QtCore签名不对.
我12.4,另一同事13不能重现,他们12.6一直重现。
由于是新机器,根本不是Output不能运行的问题,连Streamer也不能运行的。
原因在于,第一次启动之前需要允许未授权程序被运行,并且一个个同意未签名具体文件,这个操作通常只要做一次。
sudo spctl --master-enable
和
sudo spctl --master-disable
运行disable以后,可以看到App Store,可信开发者,以及AnyWhere这隐藏的第三个选项。
重新enable之后,第三选项消失,但其实已经允许。