如何在macOS开发中给 PKG 签名和公证(productsign+notarytool)

macOS 中,给 PKG 文件进行签名是一个确保用户能够顺利无警告地安装软件的重要步骤。以下是给 PKG 签名的详细步骤:

一、准备阶段

获取开发者账号和证书:
  • 首先,需要在苹果开发者网站(Apple Developer)注册一个有效的开发者账号。
  • 登录开发者账号后,进入 “Certificates, IDs & Profiles” 页面。
  • 创建并下载 “Developer ID Application” 证书和 “Developer ID Installer” 证书。这两个证书分别用于签名应用程序和 PKG 安装包。
  • 将下载的证书双击安装到“钥匙串访问”中。
打包PKG文件:
  • 使用 Packages 工具或其他打包工具,将需要分发的应用程序和相关文件打包成一个 PKG 安装包。
  • 在打包过程中,可以添加安装前和安装后的脚本来执行一些自定义操作。

二、签名阶段

获取证书名称:
  • 打开终端,输入命令 security find-identity -v,列出所有已安装的证书。
  • 找到与 “Developer ID Installer” 相关的证书名称,通常格式为 “Developer ID Installer: 开发者名称 (证书标识符)”。
签名PKG文件:

使用 productsign 命令对 PKG 文件进行签名。命令格式如下:

例如:

这将生成一个新的签名后的 PKG 文件。

三、验证签名

验证PKG文件签名:

使用 pkgutil 命令验证 PKG 文件的签名是否有效。命令格式如下:

如果签名有效,命令将输出 “signed by a developer certificate issued by Apple for distribution”。

四、公证阶段(可选)

macOS 10.14.5 开始,苹果要求所有分发的软件都必须经过公证(Notarization)。公证过程如下:

准备已签名的软件包:

在公证之前,你需要确保你的 .pkg 文件已经使用 codesign 命令进行了签名。

将公证凭证存储到 macOS 的钥匙串中:

上传PKG文件到苹果服务器:

使用 notarytool 提交你的软件包进行公证。这一步会将你的软件包上传到 Apple 的公证服务,并启动公证流程。

  • /path/to/your/signed/package.pkg 是你的已签名软件包的路径。
  • --keychain-profile 参数用于指定包含你签名证书的钥匙串配置文件(可选,如果证书在默认钥匙串中则不需要)。
  • --wait 参数告诉 notarytool 等待公证完成并返回结果。

如果公证成功,notarytool 会返回一个 RequestUUID,你可以使用这个 UUID 来查询公证状态或进行后续操作。

检查公证结果(如果未使用 --wait):

如果你没有使用 --wait 参数,你需要使用返回的 RequestUUID 来检查公证状态。

替换 <RequestUUID> 为你实际获得的 UUID

五、盖章步骤

一旦你的软件包通过了公证,你就可以使用 stapler 工具对其进行盖章。

对软件包进行盖章:

使用 stapler 工具对你的软件包进行盖章,以表明它已经通过了 Apple 的公证服务。

/path/to/your/signed/package.pkg 是你的已签名且已公证的软件包的路径。

验证盖章结果(可选):

你可以使用 stapler 工具来验证你的软件包是否已经被正确盖章。

/path/to/your/stapled/package.pkg 是你的已盖章软件包的路径。

如果所有步骤都成功完成,你的软件包现在应该已经准备好分发给用户了。

用户可以通过 macOS 的“安装未知开发者应用”的安全设置来安装你的软件包,而不会因为未经验证的应用程序而被阻止。

六、命令集合

以下是一个简要的流程,以及一个相应的 .sh 脚本示例:

1.用于签名 .pkg  文件( productsign.sh )。

2.用于签名和公证 .pkg 文件(productsign-online-notarytool.sh)。

请注意,这些步骤假设你已经具备了必要的 Apple Developer 账户、证书和配置文件,并且你的 macOS 系统已经安装了 XcodeXcode Command Line Tools。如果你遇到任何问题,请检查你的证书、配置文件和路径是否正确,以及你是否拥有执行这些命令的适当权限。

参考:

https://taoofcoding.tech/blogs/2022-11-13/use-notarytool-to-notary-macos-app

https://blog.csdn.net/Crystal_Mr_Rose/article/details/136351429

macOS 工具 - 查看PKG文件内容, App下载安装 SuspiciousPackage官方下载地址(免费): http://www.mothersruin.com/software/SuspiciousPackage/get.html

Mac OS平台下应用程序PKG安装包制作工具Packages, App下载安装Packages官方下载地址(免费): http://s.sudre.free.fr/Software/Packages/resources.html

参考链接


如何在macOS开发中给 PKG 签名和公证(productsign+notarytool)

发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注