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 获得任何指示,但现在在升级后可以正常工作。
使用 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 获得任何指示,但现在在升级后可以正常工作。