我应该使用哪个证书来签署我的 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 字符串作为子字符串的证书来找到正确的证书。如果只有一个以上的证书匹配,它会警告你,你可以给一个更长的字符串。
我们正在开发 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
:
spctl -a -v Carousel.app
./Carousel.app: accepted
source=Developer ID
The
Developer ID Application
certificate allows your app to run withGatekeeper
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 字符串作为子字符串的证书来找到正确的证书。如果只有一个以上的证书匹配,它会警告你,你可以给一个更长的字符串。