codesign显示.app捆绑好的,但看门人抱怨

时间:2015-12-24 00:07:01

标签: macos code-signing osx-gatekeeper

我无法让.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上运行正常,请参阅下面的编辑),说明"开发人员的身份无法确认。"点击"?"看门人弹出窗口中的按钮将我带到标题为&#34的帮助页面;应用程序已被修改或损坏",但我认为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案例中出现的问题,以便我可以更改我的签名做法吗?

修改 为了解决下面的问题,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

编辑2 : 我建议使用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。

0 个答案:

没有答案