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

时间:2015-03-13 18:29:43

标签: xcode macos certificate release

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

List of six certificates: two of type Mac Development, four of types Developer ID Installer, Mac App Distribution, Mac Installer Distribution, Developer ID Application

当我选择一个用于签署应用程序时,我发现:

Certificate selection menu. Automatic: Mac Developer, Mac Distribution, Developer ID: *; others in Identities in Keychain

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

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

2 个答案:

答案 0 :(得分:20)

对于开发(例如,Debug configuratino),使用Mac Developer选项,该选项将选择您当地的Mac Developer证书(在您的情况下为“Mac Developer:JoséFernández”),该选项适用于工作的团队成员在你的项目上(包括测试/调试)。

对于Release,使用“Developer ID:*”,它将选择the standard application release certificate used outside the AppStore,在您的情况下为“开发者ID应用程序:Carousel应用程序。我建议在进行代码签名后进行最终测试/调试,以确保它按预期工作。

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

Apple Codesigning Certificate Types

名称类型,说明)

iOS开发

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

iOS发布

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

Mac开发

  • Mac Developer :团队成员名称用于启用某些应用服务 在开发和测试期间。

Mac App Distribution

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

Mac安装程序分发

  • 第三方Mac开发者安装程序:团队名称用于签名和提交 包含已签名应用程序的Mac安装程序包到Mac App 存储。

开发者ID应用

  • 开发者ID应用:团队名称之前用于签署Mac应用程序 将其分发到Mac App Store之外。

开发者ID安装程序

  • 开发者ID安装程序:团队名称用于签名和分发Mac 包含已签名应用程序的安装程序包,位于Mac App之外 店

enter image description here 签名后,您还可以在Terminal.app启用Gatekeeper时模拟应用的启动行为:

spctl -a -v Carousel.app

./Carousel.app: accepted
source=Developer ID
  

Developer ID Application证书允许您的应用运行   设置上的Gatekeeper允许从Mac App Store下载的应用   并确定了开发人员“

答案 1 :(得分:0)

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

codesign -s"开发者ID" -v Carousel.app#与#34;开发者ID申请"分发

codesign -s" Mac Developer" -v CarouselDebug.app#与Mac开发者签约:*"用于测试

spctl -a -v Carousel.app#来验证,寻找"接受"

spctl -a -v CarouselDebug.app#来验证,寻找"接受"

Codeign通过查找钥匙串中具有-s字符串作为子字符串的证书来查找正确的证书。如果只有多个证书匹配,它会发出警告,你可以提供更长的字符串。

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