如何验证 macOS pkg 是否经过公证
How do I verify that a macOS pkg is notarized
如何验证 macOS 安装程序 pkg 文件是否已 notarized?是否有命令行工具可以执行此操作?
stapler validate
会这样做 -
$ stapler validate myfile.pkg
Processing: myfile.pkg
The validate action worked!
如果打印The validate action worked!
,说明指定的pkg文件已经过公证
如果打印 does not have a ticket stapled to it.
,则指定的 pkg 文件未经过公证,或者公证后从未跟进 stapling step.
很遗憾,正确答案不止一个。
公证过程通过将程序包、应用程序或二进制文件上传到苹果来进行。然后苹果会验证它。如果基础格式支持它,您可以下载 "ticket" 和 "staple" 它。此处值得注意的是,您无需在机票上装订即可对其进行公证。 Gatekeeper 会在运行时用 apple 查找它。
您可以使用staple
命令检查是否有装订票。但是您可以使用 spctl
来获得有关看门人是否会接受它的更广泛的答案。
还有一个问题——2019 年 8 月之前的 Apple 开发者帐户免于公证要求。 (至少在 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)
使用较新的苹果开发者帐户。符合公证要求:
$ 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 安装程序 pkg 文件是否已 notarized?是否有命令行工具可以执行此操作?
stapler validate
会这样做 -
$ stapler validate myfile.pkg
Processing: myfile.pkg
The validate action worked!
如果打印
The validate action worked!
,说明指定的pkg文件已经过公证如果打印
does not have a ticket stapled to it.
,则指定的 pkg 文件未经过公证,或者公证后从未跟进 stapling step.
很遗憾,正确答案不止一个。
公证过程通过将程序包、应用程序或二进制文件上传到苹果来进行。然后苹果会验证它。如果基础格式支持它,您可以下载 "ticket" 和 "staple" 它。此处值得注意的是,您无需在机票上装订即可对其进行公证。 Gatekeeper 会在运行时用 apple 查找它。
您可以使用staple
命令检查是否有装订票。但是您可以使用 spctl
来获得有关看门人是否会接受它的更广泛的答案。
还有一个问题——2019 年 8 月之前的 Apple 开发者帐户免于公证要求。 (至少在 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)
使用较新的苹果开发者帐户。符合公证要求:
$ 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 已经发布,这略有改变。签名密钥的年龄影响莫哈韦沙漠。卡特琳娜现在要求一切都经过公证。