如何验证macOS安装程序pkg文件是否为notarized?有命令行工具可以做到这一点吗?

最佳答案

不幸的是,答案不只一个。

公证过程通过将程序包,应用程序或二进制文件上传到苹果来工作。苹果随后将对其进行验证。如果基础格式支持,则可以下载该“票证”并“装订”它。这里值得注意的是,您不需要装订机票即可进行公证。 Gatekeeper将在运行时使用Apple查找它。

您可以使用staple命令检查是否装订了票。但是您可以使用spctl来获得关于网守是否会接受的更广泛的答案。

还有一个额外的问题-在2019年8月之前的Apple Developer帐户免于公证要求。 (至少在Mojave上。)这会使尝试告诉发生的事情非常混乱。

关于无符号,有符号和经过公证的二进制文件的一些示例。这里没有钉书钉。

使用的苹果开发者帐户已有数年历史了。关守检查不需要公证:

$ spctl -a -vvv -t install go-hello-unsigned
go-hello-unsigned: rejected
source=no usable signature

$ spctl -a -vvv -t install go-hello-signed-oldapple
go-hello-signed-oldapple: accepted
source=Developer ID
origin=Developer ID Application: Example Inc (oldapple)

$ spctl -a -vvv -t install go-hello-notarized-oldapple
go-hello-notarized-oldapple: accepted
source=Notarized Developer ID
origin=Developer ID Application: Example Inc (oldapple)


使用较新的Apple开发人员帐户。符合公证要求:

$ spctl -a -vvv -t install go-hello-unsigned
go-hello-unsigned: rejected
source=no usable signature

$ spctl -a -vvv -t install go-hello-signed-newapple
go-hello-signed-newapple: rejected
source=Unnotarized Developer ID
origin=Developer ID Application: Kolide, Inc (newapple)

$ spctl -a -vvv -t install go-hello-notarized-newapple
go-hello-notarized-newapple: accepted
source=Notarized Developer ID
origin=Developer ID Application: Kolide, Inc (newapple)


更新资料

既然已发布了卡塔琳娜(catalina),则它的变化很小。签署密钥的年龄影响莫哈韦沙漠。卡塔琳娜现在要求一切都经过公证。

关于macos - 如何验证macOS pkg已过公证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55074168/

10-12 06:33