3

我很难让一个.app捆绑包与看门人一起玩得很好。使用 `codedesign 运行验证看起来很有效:

$ 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 打开它时,Gatekeeper 验证失败,(注意:这发生在 OSX 10.11 上,但在 OSX 10.11 上一切正常,请参阅下面的编辑)说明“无法确认开发人员的身份”。点击“?” 网守弹出窗口中的按钮将我带到标题为“应用程序已被修改或损坏”的帮助页面,但我认为codesign在要求它验证应用程序时应该告诉我这一点。Juno.app 是公开可用的,所以如果你愿意的话,你们可以看看它,但是我们有一个较小的应用程序在同一台计算机上使用相同的证书签名,它工作得很好,并且给出了非常相似的输出:

$ 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 也可供下载。有什么方法可以让我找出这个Juno.app案子出了什么问题,以便我可以改变我的签名做法?

编辑: 为了解决下面 l'L'l 的问题,签名过程Juno.app这个脚本执行,关键行是第 28 行:

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

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

编辑 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)

这让我想到,也许其中一个Juno.app或其中一个嵌入式框架可能仍然有一个旧的版本 1 密封资源信封,但是单独检查每个嵌套资源表明所有东西都有一个版本 2 信封。

更有趣的是,看起来这个 .app 可以在 OSX 10.10 上运行,但不能在 OSX 10.11 上运行。

4

0 回答 0