如何正确签署 Mac 申请以进行自我分发?
How to properly sign a Mac application for self-distribution?
我创建了一个 Mac 文件上传客户端应用程序,它基于 UDT 库实现了通过 UDP 协议的高性能可靠数据传输。
我的设置:
- MacOS莫哈韦
- Xcode10.3
- 部署目标:10.10(基于情节提要的表单的最低要求)
现在我想弄清楚如何正确地对其进行签名,以便最终用户可以 运行 它而无需执行 Gatekeeper 覆盖。
这是我所在的位置:
- 我有一个付费的 Apple 开发者帐户,是从组织付费的开发者帐户委托给我的
- 我有分配给我的角色,允许我管理应用程序、证书、供应等。
- 我在首选项下的 Xcode 个帐户下登录了这个帐户。
- 我在账号下创建了捆绑注册,完全复制自Xcode
- 我已经创建了一个 Mac 分发证书,从我的开发机器的 CSR 开始。
- 我已经下载证书并将其导入到我机器的钥匙串中(列为“第 3 方 Mac 开发者应用程序:...”)
- 我已经为这个应用程序创建了配置文件,并分配了上述证书,配置文件类型是 App Store,但我将自己分发应用程序(是否有更正确的配置类型?)
- 在“权利”下,我选择了 "Custom Network Protocol",这听起来像是对我的申请的准确描述。
- 我已将供应配置文件导入 Xcode 并在我的项目目标的签名(调试)和签名(发布)下选择它,它自动填充团队(父组织)和上述证书。
- 我将项目中的方案更改为 "Release" 并为 "Running" 构建它,我在构建过程中收到钥匙串访问提示,并且签名步骤成功完成
- codesign -vvv -d xyz.app returns 注册的bundle、证书、团队等,都符合上面的选择。
- 我将生成的 .app 放入 .dmg 图像并通过电子邮件发送给自己
- 我在另一个 Mac 上下载了 .dmg 并安装了它
- 我尝试 运行 连接 .app 但收到以下 Gatekeeper 消息:
"XYZ" can't be opened because it is from an unindentified developer.
Your security preferences allow installation of only apps from the App Store and identified developers.
我该如何解决这个问题,以便下载的应用程序在 Gatekeeper 提示中默认有一个 "Open" 按钮。某些应用程序(例如 GIMP)已被正确识别,即使它们并非源自 App Store。
我需要做什么来解决这个问题?
我一直在挖掘它,我找到了我的答案:
https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution?language=objc
我需要的证书类型是 Developer ID 和提供 Developer ID Application 的类型,这是用于自行分发已签名 Mac 应用程序的类型。
之后需要提交给Apple进行公证,以满足10.14.5+的要求。公证完成后,我可以将导出的应用程序发送给自己,它为我提供了一个 "Open" 选项,用于从 Internet 下载的应用程序。这是期望的行为。
我要求帐户持有人通过向他们发送 CSR 来向他们颁发开发者 ID 证书,因为对于不是原始开发者帐户持有人的委托用户,开发者 ID 证书选项是灰色的(管理员角色可能满足,但我不是那种人所以不能说)。
赞。
我创建了一个 Mac 文件上传客户端应用程序,它基于 UDT 库实现了通过 UDP 协议的高性能可靠数据传输。
我的设置:
- MacOS莫哈韦
- Xcode10.3
- 部署目标:10.10(基于情节提要的表单的最低要求)
现在我想弄清楚如何正确地对其进行签名,以便最终用户可以 运行 它而无需执行 Gatekeeper 覆盖。
这是我所在的位置:
- 我有一个付费的 Apple 开发者帐户,是从组织付费的开发者帐户委托给我的
- 我有分配给我的角色,允许我管理应用程序、证书、供应等。
- 我在首选项下的 Xcode 个帐户下登录了这个帐户。
- 我在账号下创建了捆绑注册,完全复制自Xcode
- 我已经创建了一个 Mac 分发证书,从我的开发机器的 CSR 开始。
- 我已经下载证书并将其导入到我机器的钥匙串中(列为“第 3 方 Mac 开发者应用程序:...”)
- 我已经为这个应用程序创建了配置文件,并分配了上述证书,配置文件类型是 App Store,但我将自己分发应用程序(是否有更正确的配置类型?)
- 在“权利”下,我选择了 "Custom Network Protocol",这听起来像是对我的申请的准确描述。
- 我已将供应配置文件导入 Xcode 并在我的项目目标的签名(调试)和签名(发布)下选择它,它自动填充团队(父组织)和上述证书。
- 我将项目中的方案更改为 "Release" 并为 "Running" 构建它,我在构建过程中收到钥匙串访问提示,并且签名步骤成功完成
- codesign -vvv -d xyz.app returns 注册的bundle、证书、团队等,都符合上面的选择。
- 我将生成的 .app 放入 .dmg 图像并通过电子邮件发送给自己
- 我在另一个 Mac 上下载了 .dmg 并安装了它
- 我尝试 运行 连接 .app 但收到以下 Gatekeeper 消息:
"XYZ" can't be opened because it is from an unindentified developer. Your security preferences allow installation of only apps from the App Store and identified developers.
我该如何解决这个问题,以便下载的应用程序在 Gatekeeper 提示中默认有一个 "Open" 按钮。某些应用程序(例如 GIMP)已被正确识别,即使它们并非源自 App Store。
我需要做什么来解决这个问题?
我一直在挖掘它,我找到了我的答案: https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution?language=objc
我需要的证书类型是 Developer ID 和提供 Developer ID Application 的类型,这是用于自行分发已签名 Mac 应用程序的类型。 之后需要提交给Apple进行公证,以满足10.14.5+的要求。公证完成后,我可以将导出的应用程序发送给自己,它为我提供了一个 "Open" 选项,用于从 Internet 下载的应用程序。这是期望的行为。
我要求帐户持有人通过向他们发送 CSR 来向他们颁发开发者 ID 证书,因为对于不是原始开发者帐户持有人的委托用户,开发者 ID 证书选项是灰色的(管理员角色可能满足,但我不是那种人所以不能说)。
赞。