行业动态
代码签名CodeSigning也叫App签名,就是这个意思
2021-03-14

在包装过程中,我受了很多苦。归根结底,我不了解某些概念和原则,...

代码签名代码签名也称为应用程序签名。它依赖IOS证书。它保证了应用程序(未经修改)的合法性,完整性,真实性和一致性。代码签名的核心是:证书,公钥和私钥。

数字签名对指定的信息使用哈希算法来获取固定长度的消息摘要,然后使用私钥(请注意,它必须是私钥)对摘要进行加密以获得数字签名。所谓的代码签名就是这样。

当数字证书(数字证书)证书生产开发人员申请IOS起始证书时,他需要通过钥匙串产生CSR文件(CertificateSigningRequest),并将其提交给Apple的证书颁发机构进行签名[Apple Worldwide Developer Relations证书颁发机构(WWDR),最后从Apple的官方网站下载并安装它。在此过程中将生成一个私钥。证书和私钥在钥匙串中的位置如图所示:

ios开发数字签名代码

IOS证书申请和使用的详细说明

证书组成WWDR数字签名后的数字证书如下:

ios开发数字签名代码

详细信息:

ios开发数字签名代码

它包含两个部分:

包括用户的公共密钥,用户个人信息,证书颁发机构信息,证书有效期等信息。

WWDR使用证书本身内容的哈希算法获得固定长度的消息摘要,然后使用其自己的私钥对消息摘要进行加密以生成数字签名。整个过程如图所示:

ios开发数字签名代码

如果上述私钥被删除或丢失,则无法对代码进行签名并且不能使用证书。如果私钥是由其他人获得的,则其他人可以“替换”您以发布该应用程序!因此,请务必保留您的私钥,最好将其导出以保存在安全的地方!

证书使用IOS系统原本拥有WWDR的公钥。系统首先通过指定的哈希算法计算证书的内容,以获取信息摘要。然后使用WWDR的公钥对证书中包含的数字签名进行解密,从而获得由WWDR私钥加密的信息摘要;最后比较两个信息摘要,如果内容相同,则表示证书是可信任的。整个过程如图所示:

ios开发数字签名代码

IOS系统在确认证书是真实的之后,可以获取证书中包含的开发人员的公共密钥,并使用该公共密钥来确定代码签名的可用性。

证书存在的意义

通过使用证书的过程,可以看出证书本身只是中间媒介。 IOS系统不关心证书。实际上,它只希望证书中包含开发人员的公钥! !

但是开发人员如何证明公钥是他自己的呢? IOS安全系统如何相信公钥属于开发人员?

无论哪个开发人员对IOS的安全系统说,这个公钥都是我的,系统都不相信,也就是说,该系统100%不信任开发人员。但是,IOS安全系统对其自己的WWDR值得信赖ios开发数字签名代码,并且Apple已在IOS系统中构建了WWDR公钥。有了证书,IOS安全系统只需使用WWDR公共密钥即可获得任何开发人员的受信任公共密钥。这就是证书存在的意义! !

公钥公钥包含在数字证书中,而数字证书包含在预配置文件中。安装该应用程序后,描述文件将被复制到IOS设备。

IOS安全系统可以通过证书确定开发者的身份,并且可以使用从证书中获得的公钥来验证开发者是否使用私钥签名了代码,资源文件等。对应于公钥的更改后,最终确定该应用程序是否可以在IOS设备上合法运行。

私钥每个证书(实际上是公钥)都对应一个私钥,该私钥将用于对代码,资源文件等进行签名。只有开发证书和描述文件无法正常调试,因为无法签名没有私钥。

与签名相关的命令可以使用以下命令:安全性find-identity -v -p代码签名

ios开发数字签名代码

这意味着当前有10个可用的证书,其中包含公钥和私钥。

使用以下命令:codeign -s'iPhone开发人员:马勇军(5R2CR73PQ 7)'TXChatParent.app

注意:xx.app文件是xx.ipa文件的修改后的扩展名,xx.ipa.zip解压缩后包含的xx.app文件。

为了重置签名,必须带-f参数。使用此参数,codesign将用您选择的签名替换现有的签名:codeign -f -s'iPhone开发人员:马勇军(5R2CR73PQ 7)'TXChatParent.app


393701618