首页 文章

如何为 OSX 签署 DMG 和安装程序

提问于
浏览
4

我已经和它斗争了很长一段时间,如果有人能帮我理解这里发生的事情,我将非常感激。

我有一个 install4j 项目,它为 Windows 和 OSX 创建安装程序包。我有一个 Windows 的常规签名证书,这没有问题。我也有 Apple 开发人员证书。我已将私钥从我的钥匙串导出到 p12 文件。我测试了生成的 p12 文件,以确保它与密钥库密码一起使用。证书绝对有效,因为我今天(再次)创建了它。而且,当我通过 Maven 运行安装程序时,它看起来好像一切都很顺利:

[INFO] Compressed media file 'Mac OS X Single Bundle':
[INFO]   Compressing files
[INFO]   Generating VM options file vmoptions.txt.
[INFO]   Signing installer
[INFO]   Signing DMG
[INFO]   Moving media files to media directory /Users/....
[INFO]   The name of the media file is my-app_macos_1_1_1.dmg.
[INFO]   The size of the media file is 4.8 MB

这似乎很好,除了安装程序和 dmg 没有签名,或者至少不是有用的方式:

$ spctl -a -v target/media/my-app_macos_1_1_1.dmg
target/media/my-app_macos_1_1_1.dmg: CSSMERR_TP_CERT_EXPIRED
$ spctl -a -v /Volumes/my-app/My\ Application\ Installer.app
/Volumes/my-app/My Application Installer.app: CSSMERR_TP_CERT_EXPIRED

证书尚未过期:

Alias name: mac developer: me myself (my company, inc.)
Creation date: Mar 6, 2017
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: C=US, O="Radiologics, Inc.", OU=K865L34KBQ, CN=Mac Developer: Me Myself (XXXX), UID=YYYY
Issuer: CN=Apple Worldwide Developer Relations Certification Authority, OU=Apple Worldwide Developer Relations, O=Apple Inc., C=US
Serial number: 30544da25ea67233
Valid from: Mon Mar 06 14:46:17 CST 2017 until: Tue Mar 06 14:46:17 CST 2018

但是,无论我是直接从 install4j 还是通过 Maven 插件构建 dmg/installer,结果都无效。我总是得到类似的东西:

$ codesign -dvvv target/media/my-app_macos_1_1_0.dmg
Executable=.../target/media/my-app_macos_1_1_0.dmg
Identifier=my-app_macos_1_1_0
Format=disk image
CodeDirectory v=20100 size=173 flags=0x0(none) hashes=1+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=XXXXXX
Hash choices=sha256
CDHash=XXXXX
Signature size=8641
Authority=(unavailable)
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=36

为了让我们能够分发这个应用程序,我们真的需要让它发挥作用,但我已经花了几天时间没有取得任何进展。如果有人能够了解这里发生的事情,我会非常感激。

1 回答

  • 7

    有两种不同类型的证书可用于在 Mac App Store 之外分发应用程序。

    申请证书和安装人员证明。

    检查您的证书(您可以通过隐藏在/Application/Utilities 中的 Keychain Access 应用程序中的“我的证书”进行检查)以确保您使用的是安装程序证书(在我的计算机上,其名称为“Developer ID Installer:Michael Dautermann”这与用于对应用程序进行协同签名的“开发者 ID 应用程序”证书是分开的。

    更多信息在这里可以看到

    至于 DMG,我的原始答案是“不能那样做”,但实际上从 MacOS 10.11.5 开始你可以签署 dmg 文件。更多信息可以在“macOS 代码深度签名”参考指南的“签名磁盘映像”部分中看到。您将使用您的开发者 ID 应用程序证书。

相关问题