苹果系统运行着一些现有的通过台代最大和最赚钱的软件应用程序生态系统 。理论上 ,开源要进入这些生态系统,多平传统上需要使用macOS ,码签名扩并加入苹果开发者计划(Apple Developer Program)。生态 如果你想为 Apple 操作系统开发应用程序,系统你可能会使用 Apple 的访问操作系统和 Apple 的官方工具进行开发和分发 。但对于开源开发人员通常希望以最小的权限努力分发跨平台应用程序 。在整个编程语言生态系统中 ,通过台代你运行的开源操作系统被抽象为许多应用程序的实现细节。模板下载通过创建 macOS、多平iOS 等开发需要直接访问 macOS 和通常高于市场价格的码签名扩Apple 硬件的要求,苹果软件生态系统强加的生态分发要求是有效的排他性,并阻止利益相关方对进入其生态系统。系统 在苹果平台上发布软件的访问一个问题是代码签署和公证,即你需要: 1.在应用程序中嵌入加密签名,有效地证明来自 Apple Developer Program 关联帐户的真实性。 (这是服务器租用签名。) 2.将你的应用程序上传到 Apple,以便他们对其进行检查,验证它符合要求,可能还会存储一个副本。然后,苹果会发布自己的加密签名 ,即公证书 ,然后需要将其嵌入到正在分发的应用程序上,这样苹果的操作系统才能信任它。(这是公证 。香港云服务器) 从历史上看,这些步骤需要 Apple 专有软件专门从 macOS 运行。这意味着,即使你在 Rust、Go 等软件生态系统或 Web 平台中 ,你可以在不直接访问 macOS 的情况下交叉编译应用程序(测试显然是另一回事),如果你愿意,你仍然需要 macOS签署和公证你的申请。由于默认的安全设置 ,在macOS上需要有效的签名和公证 。在 iOS 等移动平台上 ,源码库除非你运行的是越狱设备,否则不可能发布未经签名和公证的应用程序。 如果我不需要macOS来构建我的应用程序,为什么我要被迫把苹果设备作为我的软件发布过程的一部分 ?为什么在发布的时候 ,我必须签署和公证我的申请,它不能更简化吗? 如果能重新实现 Apple 代码签名 ,以便开发人员有更多的灵活性和机会将应用程序分发到 Apple 的高防服务器生态系统 。其最终目标是扩大 Apple 生态系统对更多开发者的访问 。 首先,得益于 rcodesign 0.14.0的发布。这是我第一次发布 rcodesign 的预构建二进制文件(Linux、Windows 和 macOS) 。 macOS rcodesign 可执行文件是自签名的,它由 GitHub Actions Linux 运行程序使用 YubiKey 独有的代码签名证书进行签名 。建站模板 2021年,apple-codesign 项目/Rust crate 发生了很大变化 !只需查看更改日志 ! 这个项目从tugger-apple-codesign改名而来。 如果你是通过 cargo install 安装的 ,你需要 cargo install --force apple-codesign 来强制 Cargo 用另一个 crate 中的一个来覆盖 rcodesign 可执行文件 。 rcodesign CLI可执行文件仍然存在,而且比以往任何时候都更强大。你仍然可以在Linux、Windows、macOS和任何其他平台上对Apple应用程序进行签名,你可以在这些平台上编译Rust程序。 这与 PyOxidizer 的文档一起发布在 readthedocs.io 上(因为我使用的是 monorepo)。那里有一些通用文档 ,例如有关如何通过将你自己的替代代码签名 PKI 部署到并行 Apple 来选择性地绕过 Gatekeeper 的指南。 支持签名包 、DMG 和 .pkg 安装程序当我去年宣布这个项目时 ,只有 Mach-O 二进制文件和非常简单的 .app 包是可签名的。即便如此,也有很多微妙的问题 。 Rcodesign sign现在可以对更复杂的包进行签名,包括许多嵌套的包。有报道称iOS应用包签名正确。 该工具还支持签名.dmg磁盘映像文件和.pkg扁平封装包安装程序。 已知的签名限制现在记录在 Sphinx 文档中 。 我相信 rcodesign 现在支持对用于 Apple 软件分发的所有主要文件格式进行签名 。 支持 Linux 、Windows 和 macOS 上的公证 苹果发布了一个名为Transporter的Java工具 ,可以让你上传文物到苹果进行公证 。它们使这个工具可用于Linux 、Windows ,当然还有macOS 。 虽然这个工具不是开源的,但使用这个工具可以让你在 Linux 和 Windows 上进行公证 ,同时仍然使用 Apple 的官方工具与他们的服务器通信 。 rcodesign 现在支持调用 Transporter 并将工件上传到 Apple 进行公证。我们现在支持公证包 、.dmg 磁盘映像和 .pkg 扁平封装安装程序包 。我已经成功地从 Linux 公证了所有这些应用程序类型。 由于支持对所有应用程序类型进行签名和公证 ,现在可以在没有 macOS 参与发布过程的情况下发布 Apple 软件 。 YubiKey 集成我尝试尽可能多地使用我的 YubiKey,因为存储在 YubiKey 上的密钥或私钥可能比位于某个文件系统上的密钥或私钥更安全 。如果你破解了我的设备 ,你很可能会获得我的私钥。但是你需要物理访问我的 YubiKey 并强迫或强迫我解锁它,以获得访问其私钥的权限 。 rcodesign 现在支持使用 YubiKeys 进行签名操作 。 这确实需要默认的智能卡 Cargo 功能 。因此 ,如果手动构建,你将需要例如cargo install --features smartcard apple-codesign. 。 YubiKey 集成来自 yubikey |