如何正确地进行 macOS 屏幕保护程序的代码签名?

3
我想对我的macOS屏幕保护程序进行代码签名,以消除“未知开发者”的警告信息。根据苹果公司的文档苹果论坛上的这位用户所说,应该使用“开发者ID应用程序”签名证书来进行签名。但是这对我似乎不起作用。
当我按照苹果的测试签名正确性的指南操作时,我得到的响应如下:
Screensaver.saver: rejected (the code is valid but does not seem to be an app)

我的签名设置看起来像这样:

enter image description here

我不确定在这一点上我应该尝试什么其他的。主要是我担心未来的Mac应用程序将需要签名/公证,这对屏幕保护程序意味着什么?
2个回答

6

以下是附加的公证说明:

不能直接公证 .saver 文件,但可以通过一种迂回的方式对 ZIP 文件进行公证,这也是我分发我的屏幕保护程序的方式。以下是我为简单屏幕保护程序使用的步骤,您的实际情况可能会有所不同:

  1. /usr/bin/codesign -f -o runtime --timestamp --sign “在此插入开发者ID安装证书标识符” XYZZY.saver
  2. 压缩经过代码签名的 .saver 文件,例如 XYZZY.saver.zip
  3. /usr/bin/xcrun altool --verbose --notarize-app --primary-bundle-id “在此插入标识符” -u “xyzzy@plugh.com" -p “在此插入您的 Apple ID 的应用程序特定密码" -t osx -f XYZZY.saver.zip
  4. 附:将应用程序特定密码存储在钥匙串中,并从命令行引用它,像这样:
    • /usr/bin/xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u xyzzy@plugh.com -p “在此插入来自 Apple 的应用程序特定密码”
  5. 等待公证完成,像这样检查状态:
    • /usr/bin/xcrun altool --notarization-history 0 -u “xyzzy@plugh.com" -p "@keychain:AC_PASSWORD”
  6. 虽然可以公证 ZIP 存档文件,但无法直接将公证凭据钉到它上面。相反,对于最初添加到存档中的每个单独项目运行 stapler。然后创建一个包含已经钉好公证凭据的项目的新 ZIP 文件进行分发。
    • /usr/bin/xcrun stapler staple XYZZY.saver
    • 重新压缩屏幕保护程序并分发

我无法理解这行代码:相反,对于您最初添加到存档中的每个单独项目运行stapler。 - Ahmadreza
2
我的ZIP文件只包含一个项目,即saver模块XYZZY.saver,因此我只运行一次stapler命令:/usr/bin/xcrun stapler staple XYZZY.saver。如果存档中有多个项目,则为每个项目运行stapler命令,然后重新创建存档。 - pabugeater
好的,我会尝试这样做。所以在第5级之后,我应该解压缩我的XYZZY.saver.zip文件,并使用该命令行将其加固,然后再次进行压缩!那么如何分发呢?你能为分发指导我一下吗? - Ahmadreza
2
我没有解压缩存档。只需将包含在zip存档中的每个原始项目订书钉起来。然后重新创建存档,覆盖您公证的内容。至少这就是我所做的。即使它实际上是一个文件夹(包),但保存器模块也算作单个“文件”。然后通过简单地将其提供给人们(例如通过将其存储在服务器上并广告其URL)来“分发”已公证的保存器。 - pabugeater
谢谢您!比我的软件包解决方案好多了。提醒其他人:我必须使用“开发者ID应用程序”证书,而不是“开发者ID安装程序”证书。 - Brad Root
显示剩余3条评论

4

以防万一有其他人进来看看……

目前我已经意识到一个解决方法是创建一个安装程序包,然后根据Apple的说明进行签名。

我最终使用了一个叫做Packages的免费软件来创建安装程序。在构建安装程序后,我将其复制到另一个文件夹并使用以下命令对其进行签名。

/usr/bin/productsign --sign "<Name of Developer ID Installer Cert in Keychain>" source.pkg destination-signed.pkg

希望这能帮助到某个人。据我所知,这可以避免未经验证的开发人员警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接