shell 脚本包装应用程序的签名在 OS X 10.11 中损坏了吗?

Is signing of shell script wrapping applications broken in OS X 10.11?

使用 OS X 10.11 签署包装 shell 脚本的 .app 无法在 10.10 或更低版本上验证。我可以在 10.10 和 10.9 上签名,它会在 10.9、10.10 和 10.11 上进行验证。

我在 github 上放了两个示例应用程序和一个脚本来展示这一点。这两个 HelloWorld.app 仅在 Contents/MacOS/HelloWorld 中的二进制文件中有所不同。一个是 shell 脚本,另一个是编译 objective-c.

两个版本的签名在 10.11 上有效并验证:

Shell 脚本版本:

codesign -s "${signing_identity}" -v shell-script/HelloWorld.app
signed bundle with generic [liamsharp.helloworld]

codesign -vv shell-script/HelloWorld.app
shell-script/HelloWorld.app: valid on disk
shell-script/HelloWorld.app: satisfies its Designated Requirement

Objective-C版本:

codesign -s "${signing_identity}" -v objective-c/HelloWorld.app
signed bundle with Mach-O thin (x86_64) [liamsharp.helloworld]

codesign -vv objective-c/HelloWorld.app
objective-c/HelloWorld.app: valid on disk
objective-c/HelloWorld.app: satisfies its Designated Requirement

但是 shell 脚本版本无法在 10.10 和 10.9 上验证:

codesign -vv shell-script/HelloWorld.app
shell-script/HelloWorld.app: invalid signature (code or signature have been modified)

我可以访问另一台 10.11 机器,当它签署 .app 时出现同样的问题。我可以访问 10.9 机器,但也无法验证。

为 shell 脚本 .app 生成的 _CodeSignature 目录有所不同。

这是在 10.10 上签名时的样子:

CodeDirectory
CodeRequirements
CodeResources
CodeSignature

但是在 10.11 上签名时我们会得到一些额外的文件:

CodeDirectory
CodeRequirements
CodeRequirements-1
CodeResources
CodeSignature
CodeTopDirectory

我是否缺少一个神奇的选项来进行代码设计以允许它工作?还是有错误?

我现在也收到了 Apple 的回复,不过与 Graham 的回复不同:

Engineering has determined that your bug report is a duplicate of another issue and will be closed.

Duplicate of 25457707 (Open)

能否post更新if/when我听到更多。没有提供有关 eta 修复的更多详细信息,或者即使它会被修复。

更新:此问题现已在 10.11.5 中修复 - 我没有从 Apple 获得任何指示,但现在在升级后可以正常工作。