如何验证macOS pkg已过公证

时间:2019-03-09 05:04:10

标签: macos code-signing codesign notarize

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

2 个答案:

答案 0 :(得分:3)

stapler validate将执行此操作-

$ stapler validate myfile.pkg 
Processing: myfile.pkg
The validate action worked!

如果打印验证操作成功!,则对指定的pkg文件进行公证。

答案 1 :(得分:3)

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

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

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

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

关于未签名,已签名和经过公证的二进制文件的一些示例。这里没有钉书钉。

使用有几个旧的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-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)

更新

现在,卡塔琳娜娜已经被释放,但情况有所改变。签名密钥的年龄影响莫哈韦沙漠。卡塔琳娜现在要求一切都经过公证。

相关问题