如何让Gatekeeper通过使用第三方证书签名的应用程序?
我已经用我为Windows版本购买的软件进行了签名,如果我在系统首选项中选中了"Mac应用程序和标识符开发人员"选项,它将无法执行。
这是我执行的签名命令:
codesign --force --verify --verbose --sign "My cert" My.app
这是用于验证签名的命令:
codesign --verify --verbose=4 My.app
这就是输出:
My.app/: valid on disk
My.app/: satisfies its Designated Requirement
我做错了什么?
谢谢。
Gatekeeper不接受第三方证书,只接受Mac App Store和Apple Developer ID证书。原因是,如果苹果发现签名的恶意软件正在分发,他们希望能够撤销用于签名的证书;这只有在苹果拥有颁发签名证书的证书颁发机构的情况下才有可能。因此,第三方证书对于Gatekeeper来说是不可信的。
顺便说一句,你对codesign -- verify
所做的检查只检查签名是否与应用程序的内容匹配,而不是它是否被视为Gatekeeper的有效签名。为此,您需要spctl -va My.app
(尽管请注意,这会根据您当前的Gatekeeper策略进行检查,因此,如果您将Gatekeeper设置为仅限Mac App Store,它会将开发者ID签名的应用报告为"已拒绝")。