微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

签署 Mac 安装程序 (.dmg) 的分步秘诀

如何解决签署 Mac 安装程序 (.dmg) 的分步秘诀

Apple 希望对应用程序进行签名。在更新的 MacOS 版本中,未签名的应用看起来越来越不受欢迎。

作为一名几乎不了解 Apple 细节的跨平台开发人员,我必须学习如何签署 Apple 应用程序。一个循序渐进的食谱会很有帮助。

到目前为止,我了解到以下所有内容都是必要的:

  • 注册 Apple ID [1]。
    • 同意无穷无尽的法律术语。
  • 申请 Apple 开发者帐户 [2]。
    • 从多个类别中进行选择(个人、非营利组织、政府……)。
    • 接受更多的法律术语。
    • 同意对开源项目免除未指定的会员费。
    • 等待不确定的时间,直到您被 Apple 接纳或不被接纳。
  • 从 Xcode 创建证书。
    • 打开或创建任意项目以进入主菜单
    • 在主菜单 (Xcode) > Preferences > Accounts > Manage Certificates > "+"(左下角)创建证书。
    • 在主菜单 (Xcode) > Preferences > Accounts > Download Manual Profiles。似乎创建了一个扩展名为 .developerprofile文件
  • 从这里开始,缺少未知数量的步骤......
  • 也许最后一步涉及到命令 codesign [3], codesign -s <identity> --keychain <full-path-to-keychain> <path-to-disk-image>
    • 什么是<identity>
    • 什么是钥匙串文件

谁能确认或更正上述内容,并提供缺失的步骤?

请注意,构建过程最终应从 CMake 运行。因此,命令行工具优于 GUI 操作。

[1] https://appleid.apple.com/account

[2] https://developer.apple.com/

[3] https://stackoverflow.com/a/37923530/1017348

解决方法

您可以使用 Xcode 构建并签署完成,或者您可以使用 codesignaltoolstapler 工具构建、签署和公证二进制文件。

Xcode 尝试为您处理复杂的问题,代价是您不需要了解或了解所涉及的各个步骤。 .developerprofile 文件是 Xcode 的一部分,Xcode 对于准备分发的二进制文件不是必不可少的。

请参阅 Apple 的 Xcode Guide - Distribute your appDistribute outside the Mac App Store (macOS)

Apple 还发布了以下有​​关代码签名和公证的指南:

身份

什么是<identity>

identity 是用于签署二进制文件的数字证书的通用名称字段。数字证书是由 Apple 颁发的 X.509 certificate。您可以通过 Apple 开发者网站获取证书以提交给 Apple 应用商店,并在其商店外分发。

Apple Developer - Certificates

需要 Apple Developer Program 会员资格才能申请、下载和使用 Apple 颁发的签名证书。对于注册为组织的团队中的开发人员,您还必须是帐户持有人或管理员才能申请用于向 App Store 提交应用的分发证书。

钥匙扣

钥匙串文件是什么?

钥匙串文件通过 macOS 上的 钥匙串访问 应用程序进行管理,请参阅 Applications/Utilities/Keychain Access。默认情况下,用户的钥匙串文件存储在 ~/Library/Keychains 中。

钥匙串文件是 macOS 存储安全用户信息的地方,例如凭据和证书密钥。需要为 codesign 工具指定钥匙串文件以定位与签名证书关联的私钥。

Apple Developer - Keychain Services

代表用户安全地存储小块数据。

计算机用户通常拥有需要安全存储的小秘密。例如,大多数人管理大量的在线帐户。为每个人记住一个复杂而独特的密码是不可能的,但将它们写下来既不安全又乏味。用户通常通过在多个帐户中回收简单密码来应对这种情况,这也是不安全的。

钥匙串服务 API 通过为您的应用提供一种机制来将少量用户数据存储在称为钥匙串的加密数据库中,从而帮助您解决此问题。当您安全地记住他们的密码时,您就可以让用户自由选择一个复杂的密码。

来自 Apple 的支持

如果上面链接的文档没有帮助,请contact Apple。您所面临的流程是 Apple 要求的,Apple 应该负担它所提供的支持。

作为注册的 Apple 开发人员,您可以访问技术支持事件:

请求技术支持

Technical Support Incident (TSI) 是对 Apple 框架、API 和工具的代码级支持的请求,可供 Apple Developer Program 和 Apple Developer Enterprise Program 的成员使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。