实际上,除非您拥有越狱的iOS设备,否则iOS设备只会运行由受信任的开发者ios企业签名的应用程序。如果您是iOS工程师,那么您必须在某些时候与代码签名进行斗争。代码签名是iOS开发人员痛苦而繁琐的任务之一,但他们不能逃避代码签名活动。代码签名和配置配置文件一直是一个持续的烦恼,并将持续到开发人员完全理解代码签名的基础知识。
这是一个介绍性的帖子,解释了代码签名过程及其优点和局限性。
关于这个系列
iOS签名应用程序的代码签名是每个iOS开发人员的热门话题之一。虽然在线提供了多种资源,以及Apple 关于代码签名过程的干净文档,但它仍然是一个谜。在本系列中,我们将尝试从头开始理解代码签名过程,包括代码签名所需的内容,以及实际的代码签名过程本身。我们还将探讨GUI,以及适用时的命令行处理方法。我们将从证书签名请求开始获得iOS开发证书,然后我们将涵盖证书及其内部部分。在了解了证书之后,我们将深入了解配置文件,最后,我们将了解代码签名过程。
代码签名
在不同的合同,签订各种协议。我们为什么要签署这些合同?签名对我们意味着什么,为什么重要?这很简单,因为签订合同可以合法地保护我们,我们相信合同中的条款和条件在合同到位时不能改变。签名还确保合同来自受信任的机构而非诈骗者的安全性。签订合同为我们提供了安全性和信任。
类似地,代码签名是对任何形式的代码进行数字签名以确认谁编写代码并确保代码在签名时未被更改或损坏的过程。代码签名使用加密哈希来验证软件代码的真实性和完整性。在软件世界中,代码签名确保了作者的身份,代码的完整性,构建系统和版本控制,以便软件用户在使用它们时感到安全和安全。代码签名使用各种安全术语,如公钥,私钥,证书,数字签名等。在不同的平台上使用不同的代码签名方法,例如Linux,Windows,macOS。
iOS代码签名
除了你可能在新闻中看到的一些最近的故障之外,Apple应该拥有非常强大的安全机制。黑帽黑客很难打破这种机制。Apple还使用强大的代码签名机制为从Apple App Store下载的iOS应用程序提供安全性,完整性和安全性。大多数情况下,iOS代码签名似乎是在幕后发生的魔术。如果它有效,每个人都很高兴,如果没有,每个人都会感到恐慌。大多数iOS工程师都不清楚当他们编写的应用程序正在签名时会发生什么。最近几天,Apple试图通过引入自动签名来减少代码 签名Xcode中的功能,以便代码签名活动不会中断主要开发流程。Apple平台上的代码签名依赖于X.509标准上的公钥加密 。我们将在本系列的后面部分讨论所有这些工具和技术。
为什么要了解iOS代码签名?
由于大多数代码签名任务现在由Xcode处理,为什么我们应该关心代码签名并花时间学习它?
以下是了解代码签名内部的一些原因:
1)iOS工程师用于从本地计算机上安装的Xcode部署iOS应用程序的日子已经一去不复返了。公司正在采用DevOps和CI / CD来构建软件,因此所有构建都需要自动化,无需任何人工或GUI交互。
2)由于Xcode的代码签名失败,开发人员试图通过重新生成和修复证书和配置文件来修复代码签名问题,因此浪费了数千个开发人员时间。
3)像Fastlane这样的第三方工具使iOS开发人员更容易构建脚本。然而,在Apple对底层技术进行更改后,Fastlane不断破坏,开发人员花费数小时,数天和数周来修复损坏的部署脚本。在某些情况下,工程师必须等到Fastlane实施新的更改。
4)如果您是iOS开发人员/工程师,并希望一生成为iOS工程师,那么您无需了解这些内容。但是,如果您想在职业生涯中成长,那么您必须详细了解底层工具,技术和整个iOS生态系统。如果您不了解这些底层技术,无论您的iOS开发技能有多好,您都不会获得iOS技术主管,iOS技术架构师或类似角色。作为技术架构师,您应该能够快速修复代码签名或类似的基础架构相关问题,而无需依赖Xcode或其他第三方工具。
我希望这足以说服代码签名的重要性。这取决于你是学习还是离开。
先决条件
让我们深入了解iOS代码签名的世界。我们将从头开始涵盖所有需要的内容以及它在幕后的内容。为了开始,我们需要以下内容,如果您正在阅读本文,我相信每个人都已经拥有这些内容。
- 苹果系统
- Apple Developer会员资格
- Xcode 9+
一旦掌握了所有这些,您就可以深入了解iOS代码签名的内容。
代码签名的好处
Apple希望我们完成复杂的代码签名过程,因为它对真实用户有一些好处。iOS应用程序的用户从Apple的应用程序商店下载应用程序时会感到安全。代码签名确保了这一点
1)合法开发人员编写了此代码,并且具有签名者或应用程序作者的身份。
2)代码没有被某人更改,因为它是由作者编写的。它保证作者生成的代码是原始的,并且代码中没有任何内容注入代码,因为它是由作者签名的。
3)用户可以从他们信任的开发人员那里下载应用程序,而无需过多担心安全性。
代码签名是为了iOS用户的安全和保障,以便他们使用从应用商店下载的应用程序感到安全。
代码签名的局限性
尽管代码签名是为了用户的安全性,但有些方面始终没有解决安全问题:
1) 代码签名确保代码来自合法开发人员,该开发人员是Apple Developer程序的成员,但不保证代码本身没有安全漏洞。
2) 代码签名并不保证在应用程序执行期间动态加载的应用程序插件是安全的。
3) 签名代码没有数字版权管理或复制保护技术。