我正在尝试让 xcode 使用我的分发证书对我的应用程序进行签名,这样应用程序就可以同时使用 thespctl
和codesign
verify 命令行进行正确验证。这是一个将通过下载而不是通过 Mac OS Store 分发的应用程序。
我有一个 Apple Developer Program OSX 分发证书。我只是一个团队成员,不是我们 Apple Developer Program 团队的管理员,但我的管理员制作了证书并将其发送给我。
这是开发人员计划网站中的证书:
这是钥匙串访问中我的机器上安装的证书:
我使用 File > New > Project > Cocoa 在 xcode 中创建了一个可可应用程序。该项目名为 Fred,因此它构建 Fred.app。我没有修改项目的代码/资源,所以它只是显示了一个示例窗口和示例菜单栏。
这是我的应用程序身份/签名:
以下是签名设置:
这是“计划”:
如您所见,我在 Code Sign Identity 中选择了 Mac Distribution。当我这样做时,它给了我你可以在身份/签名屏幕截图中看到的错误:
Fred 的配置设置存在冲突。Fred 为开发自动签名,但手动指定了冲突的代码签名身份 3rd Party Mac Developer Application。在构建设置编辑器中将代码签名标识值设置为“Mac Developer”,或在项目编辑器中切换到手动签名。
如果我选择“Mac Developer”作为我的代码签名身份,则构建成功完成。但似乎我想选择 Mac Distribution,因为我正在签署分发协议,对吗?
无论如何,当我选择“Mac Developer”并构建应用程序时,我会使用以下命令行:
Michael.Katz:~/Desktop$ codesign --verify --deep --strict --verbose=2 Fred.app
Fred.app: valid on disk
Fred.app: satisfies its Designated Requirement
但:
Michael.Katz:~/Desktop$ spctl --verbose -a -t exec -vv "Fred.app"
Fred.app: rejected
我不知道如何解释为什么我会被“拒绝”,但我相信这意味着当应用程序被下载时,它不会被识别为具有有效的第 3 方开发人员签名(并且用户会必须绕过 Gategeeker 才能运行)。
我在这里做错了什么?
(请注意,我还在上面包含了我的构建“方案”的图像。我有一个基本问题是,我不清楚使用该方案是否是告诉 xcode 进行发布构建的唯一方法。我在想它不接受“Mac Distribution”作为我的代码签名身份的原因是因为我没有设置应用程序来正确构建分发。)