【问题标题】:How to properly sign a Mac application for self-distribution?如何正确签署 Mac 应用程序以进行自我分发?
【发布时间】:2020-03-17 19:21:03
【问题描述】:

我创建了一个 Mac 文件上传客户端应用程序,它基于 UDT 库通过 UDP 协议实现高性能可靠数据传输。

我的设置:

  • MacOS 莫哈韦沙漠
  • Xcode 10.3
  • 部署目标:10.10(基于情节提要的表单的最低要求)

现在我正在尝试弄清楚如何正确签署它,以便最终用户可以在不执行 Gatekeeper 覆盖的情况下运行它。

这是我所在的位置:

  • 我有一个付费的 Apple 开发者帐户,该帐户是从一个组织的付费开发者帐户委托给我的
  • 分配给我的角色允许我管理应用、证书、配置等。
  • 我在 Preferences 下的 Xcode 帐户下登录了此帐户。
  • 我在账号下创建了一个bundle注册,完全是从Xcode复制过来的
  • 我创建了一个 Mac 分发证书,从我的开发机器上的 CSR 开始。
  • 我已下载证书并将其导入我机器的钥匙串(列为“3rd Party Mac Developer Application:...”)
  • 我已为此应用创建了一个配置文件,并分配了上述证书,配置文件类型为 App Store,但我将自己分发该应用(是否有更正确的配置类型?)
  • 在“权利”下,我选择了“自定义网络协议”,这听起来像是对我的应用程序的准确描述。
  • 我已将配置文件导入 Xcode 并在我的项目目标的 Signing (Debug) 和 Signing (Release) 下选择它,它会自动填充 Team(父组织)和上述证书。
  • 我将项目中的方案更改为“Release”并将其构建为“Running”,在构建过程中收到钥匙串访问提示,并且签名步骤成功完成
  • codesign -vvv -d xyz.app 返回已注册的捆绑包、证书、团队等,均符合上述选择。
  • 我将生成的 .app 放入 .dmg 图像并通过电子邮件发送给自己
  • 我在另一台 Mac 上下载了 .dmg 并安装了它
  • 我尝试运行 .app,但收到以下 Gatekeeper 消息:

无法打开“XYZ”,因为它来自身份不明的开发者。 您的安全首选项仅允许安装来自 App Store 和已识别开发者的应用。

如何解决此问题,以便下载的应用程序默认在 Gatekeeper 提示符中具有“打开”按钮。某些应用程序(例如 GIMP)可以正确识别,即使它们并非来自 App Store。

我需要做什么来解决这个问题?

【问题讨论】:

    标签: xcode macos certificate code-signing apple-developer


    【解决方案1】:

    我一直在挖掘它,我找到了答案: https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution?language=objc

    如果我需要的证书类型是开发人员 ID 和提供开发人员 ID 应用程序的类型,这是用于自行分发已签名 Mac 应用程序的类型。 之后需要提交给苹果公证才能满足10.14.5+的要求。公证完成后,我可以将导出的应用程序发送给自己,它为我提供了从 Internet 下载的应用程序的“打开”选项。这是期望的行为。

    它要求我要求帐户持有人通过向他们发送 CSR 来向我颁发开发者 ID 证书,因为对于不是原始开发者帐户持有者的委派用户,开发者 ID 证书选项是灰色的(管理员角色可能满足,但我不是一个所以不能说)。

    是的。

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多