现在,MacOS要求所有应用程序都必须经过加固、签名和公证。如果要使用像PyInstaller这样的工具创建XCode之外的应用程序,应如何进行签名和公证?
对于在XTools之外创建的.app
文件的签名和公证问题,我已经解决了。在这个非常有用的帖子中,介绍了如何添加一个 entitlements.plist
来完成对 PyInstaller .app
文件的加固。我相信这个方法同样适用于命令行实用工具,但可能还有些缺漏。使用 altool
附带一个包含.app
的.dmg
执行公证测试,可以通过测试并由苹果进行公证。
只需使用相同的过程提交单个命令行实用程序也可以通过公证测试,但不会显示在其他机器的GateKeeper功能中已经签名或者已经经过公证。我认为这与在PyInstaller二进制文件中没有包括有效的Info.plist
文件有关,详见 这篇有关于Catalina创建和传递命令行工具的博客文章。
使用codesign -dvv
检查已签名文件的签名,显示Info.plist
为“未绑定”状态。
$ codesign -dvv ./dist/helloworld
Executable=/Users/aaronciuffo/Documents/src/toy/codesign/dist/helloworld
Identifier=helloworld
Format=Mach-O thin (x86_64)
CodeDirectory v=20500 size=72086 flags=0x10000(runtime) hashes=2244+5 location=embedded
Signature size=9054
Authority=Developer ID Application: Aaron Ciuffo (4H9P6Q65AM)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Nov 2, 2020 at 9:03:30 PM
Info.plist=not bound
TeamIdentifier=4H9P6Q65AM
Runtime Version=10.11.0
Sealed Resources=none
Internal requirements count=1 size=172
有一个建议的解决方案是使用Go gon包,但据我所知,gon并没有涵盖添加所需的Info.plist
。
是否有工作流或应用程序可以协助完成此操作?如何在XCode之外创建CL应用程序并成功签名?