【问题标题】:Gatekeeper signing for OSX DMGs outside of OSX/XCode/Mac App Store?在 OSX/XCode/Mac App Store 之外为 OSX DMG 签名的网守?
【发布时间】:2012-03-16 19:06:26
【问题描述】:

通过查看即将发布的 OSX 版本(OSX Lion 之后的版本)的注释,似乎所有 DMG/安装程序都需要签名,即使不是通过 Mac App Store 分发。

我找不到用于执行此签名的命令行工具,也找不到很多关于在不提交到 App Store 的情况下获得签名证书的文档。

有人能解释一下吗: 1) 如何在不通过 Mac App Store 分发您的应用程序的情况下获得证书? 2)如何在不使用内置XCode工具(最好是跨平台工具)的情况下签署DMG?

谢谢!

【问题讨论】:

  • OS X 10.8 的大部分细节仍在保密协议中。
  • 好吧,把它当作“如何为 Snow Leopard 签署 DMG”。我还按问题进行了编辑,没有提及“保密协议下的内容”。我希望这可以减轻你点击关闭按钮的触发快乐,而不是为对话做出有意义的贡献。
  • 检查xcrun 工具,该工具在签名方面做得最多(包括配置文件)。
  • @Eimantas 谢谢,但是我用xcrun 调用什么工具? (xcrun 只是一个命令行工具来调用其他sdk工具(developer.apple.com/library/mac/#documentation/Darwin/Reference/…)
  • @psychotik 有一个名为 codesign 的工具,它可能可以满足您的需求。

标签: macos code-signing osx-mountain-lion osx-gatekeeper


【解决方案1】:

详细描述了协同设计here 和here - 基本上你需要获得一个证书,然后你才能签署你的应用程序...... AFAIK 目前没有关于签署 DMG 本身的官方文档。至于您的第二个问题(跨平台签名),没有这样的工具可用(至少没有苹果官方支持的工具)。至于有关未来 OS X 版本的信息,我强烈建议您在适当的 Apple 论坛上询问(通常也有与 NDA 相关的论坛)。

【讨论】:

    【解决方案2】:

    超级简单:

    CODESIGN_IDENTITY='Name of Code Sign Cert' # Found in Keychain Access
    
    codesign -s "$CODESIGN_IDENTITY" -v path/to/YourApp.app
    

    然后上dmg:

    codesign -s "$CODESIGN_IDENTITY" -v path/to/YourApp.dmg
    

    这甚至适用于像 UDZO 这样的只读 DMG。

    【讨论】:

      【解决方案3】:

      签署磁盘映像(来源:Apple)

      可以在 macOS 10.11.5 及更高版本上使用协同设计工具对磁盘映像进行签名。这允许 Gatekeeper 在首次挂载时验证整个磁盘映像。

      Gatekeeper 也会验证磁盘映像的内容。

      磁盘映像只能使用您的 Developer ID 应用程序身份进行签名。

      在 macOS Sierra 及更高版本上,spctl 可用于评估磁盘映像的签名,如下所示:

      $ spctl -a -t open --context context:primary-signature -v MyImage.dmg /Users/me/Downloads/MyImage.dmg:接受的来源=开发者 ID

      注意:在 OS X 10.11.5 或 10.11.6 上签名的磁盘映像可能无法重新签名。在这种情况下,操作会看似成功,但签名无效。如果您遇到这种情况,请在 macOS Sierra 或更高版本上签署一份新的(未签名的)图像副本。

      【讨论】:

      • macOS 如何处理未签名的 DMG?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多