您所在的位置:主页 > 中小企业在线 > 企业 > 正文

gon - 用于macOS Notarization的CLI和Go库

2020-03-30 09:37:26 来源: 阅读:

gon

gon是一个简单而简洁的工具,用于 为macOS 签名和公证 CLI二进制文件。gon可用作CLI,可以手动运行或在自动化管道中运行。它也可以作为Go库来嵌入到用Go编写的项目中。gon可以签署和公证用任何语言编写的二进制文件。

从macOS Catalina(10.15)开始,Apple 要求对Mac App Store之外分发的所有软件进行签名和公证。未正确签名或未经过公证的软件将显示一条 错误消息 ,唯一可行的选项是“移至Bin”。即使从命令行也无法运行该软件。该 解决方法是痛苦的用户。gon可以帮助您自动化公证过程。

特征

  • 对以任何一种语言编写的一个或多个文件进行代码签名
  • 将签名的文件打包为dmg或zip
  • 公证包并等待公证完成
  • 多种输出格式的并行公证
  • 将公证票证装订为支持的格式(dmg),以便Gatekeeper验证可以脱机工作。

安装

要安装gon,请从版本页面下载适合您平台的版本。这些都经过签名并经过公证,可以立即在macOS 10.15+上使用。

您还可以使用Go 1.13或更高版本使用standard从源代码进行编译 go build。请确保已启用Go模块。

用法

gon需要一个配置文件,该文件可以指定为文件路径或通过stdin传入。该配置指定gon将用于签名和打包文件的所有设置。

gon必须在XCode 11.0或更高版本的macOS机器上运行。代码签名,公证和打包都需要仅在macOS计算机上可用的工具。

执行后,gon将配置的文件签名,打包和公证为请求的格式。gon如果0成功,将退出并显示退出代码,如果失败,则将显示其他任何值。

先决条件:获得开发人员ID证书

使用之前gon,您必须获得开发者ID证书。为此,您既可以通过网络也可以通过Mac上的本地Xcode进行操作。如果已经安装Xcode,则使用起来会更容易。

通过网络:

  1. 使用有效的Apple ID凭据登录到developer.apple.com。您可能需要注册一个Apple开发人员帐户。
  2. 导航到证书 页面。
  3. 单击“ +”图标,选择“开发人员ID应用程序”,然后执行以下步骤。
  4. 下载证书后,双击以将其导入您的钥匙串。如果您在CI机器上构建,则每个CI机器的钥匙串中都必须具有此证书。

通过Xcode:

  1. 打开Xcode并转到Xcode =>首选项=>帐户
  2. 单击左下方的“ +”,然后添加您的Apple ID(如果尚未添加)。
  3. 选择您的Apple帐户,然后单击右下角的“管理证书”。
  4. 单击左下角的“ +”,然后单击“开发人员ID应用程序”。
  5. 右键单击列表中新创建的证书,单击“导出”,然后将文件导出为p12格式的证书。将此保存在某处。您将永远无法再次下载它。

要验证您是否正确执行了此操作,可以检查钥匙串:

您应该看到一个或多个证书,并且至少一个应该是您的Developer ID Application证书。十六进制字符串前缀是您可以在配置文件中用来指定身份的值。

配置文件

配置文件可以指定报告的许可的允许/拒绝列表,特定依赖项的许可替代等。配置文件格式为HCL或JSON。

仅公证配置

您可以配置gon为对已经签名的文件进行公证。如果要集成gon到可能已经支持创建pkg,app等文件的现有构建管道中,这将很有用。

由于公证要求还对软件包的有效负载进行签名,因此此模式假定您已经对有效负载以及软件包本身进行了代码签名。gon 不会在notarize区块中签名您的包裹。请不要将此与“何时source设置” 混淆,gon它本身 会创建您的软件包,在这种情况下,它也会对它们进行签名。

除了指定之外,您还可以使用它source。在这种情况下,我们将对其中指定的文件进行代码签名和打包source,然后对结果以及notarize块中的结果进行公证。

HCL中的示例,然后是JSON中的相同配置:

请注意,您可以指定多个notarize块来同时对多象限文件进行公证。

更多使用方法可以查看官方文档

开源地址:

更多更优质的资讯,请关注我,你的支持会鼓励我不断分享更多更好的优质文章。

推荐阅读:超声波除螨器