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

时间:2017-03-06 22:11:47

标签: macos code-signing install4j

我一直在与这个斗争很长一段时间,如果有人能帮我理解这里发生的事情,我将非常感激。

我有一个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 个答案:

答案 0 :(得分:7)

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

申请证书和安装人员通知。

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

更多信息can be seen here

至于DMG,我原来的答案是“不能那样做”,但实际上从MacOS 10.11.5起你 CAN 签署dmg文件。有关详细信息,请参阅“macOS代码深度签名”参考指南的"Signing Disk Images"部分。您将使用您的开发者ID申请证书。