【发布时间】:2017-03-06 22:11:47
【问题描述】:
我已经为此奋斗了很长一段时间,如果有人能帮助我了解这里发生的事情,我将非常感激。
我有一个为 Windows 和 OSX 创建安装程序包的 install4j 项目。我有一个 Windows 的常规签名证书,这可以正常工作。我也有苹果开发者证书。我已将私钥从我的钥匙串导出到 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
为了让我们能够分发这个应用程序,我们确实需要让它工作,但我已经花了几天时间在这方面没有取得任何进展。如果有人能解释这里发生了什么,我将不胜感激。
【问题讨论】:
标签: macos code-signing install4j