我应该使用哪个证书来签署我的 Mac OS X 应用程序?

Which certificate should I use to sign my Mac OS X application?

我们正在开发 Mac OS X 应用程序,我们将在 Mac App Store 之外分发。我们最终在 Mac 开发人员计划中获得了这些证书:

当我去 select 签署申请时,我发现了这个:

我应该使用 Developer ID: * 进行调试是否正确?这是否允许没有我公司证书的开发人员签署应用程序以便能够 运行 在本地?

我应该使用什么证书来发布?

对于开发(例如,Debug configuratino)使用 Mac Developer 选项,它将选择您本地的 Mac 开发人员证书(在您的情况下为 "Mac Developer: José Fernández"),这意味着适用于从事您的项目的团队成员(包括 testing/debugging)。

对于发布,使用 "Developer ID: *" 将选择 the standard application release certificate used outside the AppStore,在您的情况下是“开发者 ID 应用程序:旋转木马应用程序。我建议在代码签名后进行最终的 test/debug 以确保其正常工作不出所料。

Xcode 获取证书的方式是通过简单的子字符串匹配。

Apple Codesigning Certificate Types

(名称, 类型, 描述)

iOS 发展

  • iPhone 开发人员:团队成员姓名用于 运行 设备上的 iOS 应用程序 并在开发过程中使用某些应用程序服务。

iOS分布

  • iPhone分布: 团队名称 用于分发您的 iOS 应用 指定设备进行测试或提交至 App Store。

Mac 发展

  • Mac Developer: Team Member Name 用于启用某些应用服务 在开发和测试期间。

Mac 应用分发

  • 第 3 方 Mac 开发者应用程序:用于签署 Mac 应用程序的团队名称 在提交到 Mac App Store 之前。

Mac 安装程序分发

  • 3rd Party Mac Developer Installer: Team Name 用于签名和提交 Mac 安装程序包,包含您签名的应用程序,到 Mac 应用程序 商店。

开发者 ID 申请

  • Developer ID Application: Team Name Used to sign a Mac app before 在 Mac App Store 之外分发它。

开发人员 ID 安装程序

  • Developer ID Installer:团队名称用于签署和分发 Mac 安装程序包,包含您签名的应用程序,在 Mac 应用程序之外 商店

代码签名后,您还可以模拟从 Terminal.app:

启用 Gatekeeper 时应用程序的启动行为
spctl -a -v Carousel.app

./Carousel.app: accepted
source=Developer ID

The Developer ID Application certificate allows your app to run with Gatekeeper on the setting "allow apps downloaded from Mac App Store and identified developers"

通过终端进行代码签名(如果不使用Xcode):

codesign -s "Developer ID" -v Carousel.app # 与 "Developer ID Application" 签署分发

codesign -s "Mac Developer" -v CarouselDebug.app # 签署 "Mac Developer:*" 进行测试

spctl -a -v Carousel.app # 验证,查找 "accepted"

spctl -a -v CarouselDebug.app # 验证,查找 "accepted"

Codesign 通过在钥匙串中查找以 -s 字符串作为子字符串的证书来找到正确的证书。如果只有一个以上的证书匹配,它会警告你,你可以给一个更长的字符串。

参考:https://developer.apple.com/library/content/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html#//apple_ref/doc/uid/TP40005929-CH4-SW4