我无法使用 .app 捆绑与网守很好地配合 . 使用`codesign运行验证看起来像是有效的:

$ codesign -dvvvv --deep Juno.app
Executable=/Applications/Juno.app/Contents/MacOS/Atom
Identifier=com.junolab.juno-lt
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=203 flags=0x0(none) hashes=3+3 location=embedded
Hash type=sha1 size=20
CDHash=ec3531899318562f7460000d9bbc218606026369
Signature size=8536
Authority=Developer ID Application: Julia Computing LLC (A427R7F42H)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jul 19, 2015, 2:34:57 PM
Info.plist entries=17
TeamIdentifier=A427R7F42H
Sealed Resources version=2 rules=12 files=20822
Nested=Frameworks/ReactiveCocoa.framework
Nested=Frameworks/Atom Framework.framework
Nested=Frameworks/Mantle.framework
Nested=Frameworks/Atom Helper EH.app
Nested=Frameworks/Squirrel.framework
Nested=Frameworks/Atom Helper.app
Nested=Frameworks/Atom Helper NP.app
Internal requirements count=1 size=180

但当我尝试用Finder打开它时,网守未通过验证,(注意:这发生在OSX 10.11上,但在OSX 10.11上工作正常,请参见下面的编辑)说明"the identity of the developer cannot be confirmed."点击网守弹出窗口中的"?"按钮将我带到 Headers 为"The app has been modified or damaged"的帮助页面,但我想 codesign 应该在要求它验证应用程序时告诉我这个 . Juno.app is publicly-available,所以你们可以看看它,如果你愿意的话,但是我们有一个较小的应用程序在同一台计算机上签署了相同的证书,工作正常,并提供非常相似的输出:

$ codesign -dvvvv --deep Julia-0.4.2.app
Executable=/Applications/Julia-0.4.2.app/Contents/MacOS/Julia
Identifier=org.julialang
Format=bundle with Mach-O universal (i386 x86_64)
CodeDirectory v=20200 size=537 flags=0x0(none) hashes=20+3 location=embedded
Hash type=sha1 size=20
CDHash=44a98280c062d9e1f2277e457dbdf8b67e1d4ffc
Signature size=8536
Authority=Developer ID Application: Julia Computing LLC (A427R7F42H)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Dec 6, 2015, 6:20:37 PM
Info.plist entries=15
TeamIdentifier=A427R7F42H
Sealed Resources version=2 rules=12 files=983
Internal requirements count=1 size=176

第二个包, Julia-0.4.2.app is available for download as well . 有什么方法可以找出 Juno.app 案例中出现的问题,以便我可以改变我的签名做法吗?

EDIT: 为了解决下面的问题, Juno.app 的签名过程由this script执行,关键行是第28行:

codesign -f -s "AFB379C0B4CBD9DB9A762797FC2AB5460A2B0DBE" --deep /Volumes/Juno/Juno.app

.app包含可能已经签名的其他资源(例如 Julia-0.4.2.app 的内容,因为Juno是包含IDE内置的Julia的分发),这就是我们将 -f 标志添加到 codesign 的原因 .

EDIT 2 :l 'L' l建议使用 spctl 深入研究该问题,产生以下结果:

$ spctl -a Juno.app -vvvvv && echo yes
Juno.app: rejected
source=obsolete resource envelope
origin=Developer ID Application: Julia Computing LLC (A427R7F42H)

这让我认为,或许其中一个嵌入式框架可能仍然具有旧的版本1密封资源信封,但是单独检查每个嵌套资源会显示所有内容都具有版本2信封 .

更有趣的是,看起来这个.app适用于OSX 10.10,但不适用于OSX 10.11 .