什么是iOS中的配置文件和代码签名?

资料来源:Stackoverflow和互联网🤓。

Apple的定义 :供应配置文件是数字实体的集合,这些数字实体将开发人员和设备与授权的iPhone开发团队唯一地联系在一起,并使设备可以用于测试。

与Android不同,您无法在iOS设备上安装任何应用。 必须先由Apple签署。 但是,在开发应用程序时,您可能需要先对其进行测试,然后再将其发送给Apple批准。 供应配置文件充当设备和开发者帐户之间的链接。 在开发期间,您可以选择哪些设备可以运行您的应用程序以及您的应用程序可以访问哪些应用程序服务。 从您的开发人员帐户下载了配置文件,并将其嵌入到应用程序捆绑包中,并且整个捆绑包均已代码签名。 必须在要在其上运行应用程序代码的每台设备上安装开发配置文件。 如果配置文件中的信息与某些条件不匹配,则您的应用将无法启动。

每个开发配置概要将包含:

  • 开发证书- 开发证书。 这些适用于希望在编写代码时在物理设备上测试应用程序的开发人员。
  • 唯一设备标识符(应用程序可以在其上运行的设备列表)
  • 一个应用程序ID( 可以包含*通配符,用于具有相似包标识符的许多应用程序 )。 应用程序ID是由两部分组成的字符串,用于标识单个开发团队中的一个或多个应用程序。

在配置文件中指定的设备只能由配置文件中包含iPhone开发证书的个人用于测试。 单个设备可以包含多个配置文件。

那么,当我们将设备连接到xcode并安装应用程序时会发生什么?

在设备上安装应用程序时,会发生以下情况:

  • Mac中的配置文件会转到您的钥匙串中的开发人员证书。
  • xcode使用证书对代码进行签名。
  • 设备的UUID 供应配置文件中的ID匹配
  • 供应配置文件中的AppID与应用程序中的捆绑包标识符 匹配
  • 所需的权利与应用程序ID相关联。
  • 用于对应用程序签名的私钥与证书中的公钥匹配。

这是xcode签名部分的屏幕截图:

因此,从上面的图像中,您可以看到已检查AppID,已验证证书,已匹配团队,已匹配功能和权利。

如果上述所有步骤均成功,则将已签名的二进制文件发送到设备,并针对应用程序中的相同配置文件进行验证 ,并最终启动 。 如果这些条件中的任何一个失败,则该应用程序将无法安装-您将看到一个灰色的应用程序图标。

开发配置文件和分发配置文件之间的区别在于,分发配置文件不指定任何设备ID。 如果您要发布一个仅限于已注册设备数量的应用程序,则需要为此使用临时文件。

分发配置文件用于将应用提交到App Store进行分发。 苹果审核了该应用程序后,他们使用可以在任何设备上运行的自己的签名登录该应用程序。

通过对应用程序进行签名,iOS可以识别谁对您的应用程序进行了签名,并可以验证自从您对应用程序进行签名以来未对其进行修改。 签名身份由Apple为您创建的公私钥对组成。

非对称密码学

非对称加密使用公共密钥私有密钥 。 用户必须保留自己的私钥,但可以共享公钥。 使用这些公钥和私钥,用户可以证明自己确实是他本人。

非对称密码学如何工作?

假设有一个UserAUserB

  • UserA创建一个PrivateKeyA + PublicKeyA。
  • UserB创建一个PrivateKeyB + PublicKeyB。

为了保护UserAUserB之间的通信

  • UserAUserB共享其PublicKeyA
  • UserBUserA共享其PublicKeyB

…并且两个用户都保留私钥。

UserAUserB发送消息时,

  • UserA使用UserBPublicKeyB加密邮件并发送。
  • 此消息只能使用UserBPrivateKeyB解密

…当UserBUserA发送消息时, 也会发生同样的事情。

观看此视频,以进一步了解不对称加密: savjee的Youtube视频

什么是iOS中的CSR(证书签名请求)?

CSR不是仅在iOS中使用的东西。 它被用于许多地方。

CSR或证书签名请求是在申请证书时提供给证书颁发机构的一段编码文本。

在这里,我们创建了一个CSR,并将其提供给apple,它将为您创建证书。 它还包含将包含在证书中的公钥。 通常在创建CSR的同时创建私钥,并创建密钥对。 证书颁发机构将使用CSR创建您的证书,但不需要您的私钥。 您需要对私钥保密。 使用特定CSR创建的证书仅适用于随其生成的私钥。 因此,如果丢失了私钥,则证书将不再起作用。

(可选-请参阅此链接以了解CSR如何处理SSL证书。过程和工作原理几乎相似)

流程:

  • 通过钥匙串访问应用程序创建证书签名请求(CSR)。
  • 钥匙串应用程序将创建一个private key (私钥将存储在钥匙串中)和一个certSigningRequest文件,然后将其上传到Apple。
  • Apple将证明请求并为您颁发证书。 证书将包含可以下载到系统的public key 。 下载后,您需要双击将其放入“钥匙串访问应用程序”。 证书将被推入钥匙串,并与私钥配对以形成代码签名身份。
  • 最后,在安装应用程序时,用于对应用程序进行签名的私钥与证书中的公钥匹配。 如果失败,则未安装应用程序。

而已。 !

请享用!!

如果您喜欢阅读这篇文章,请分享并给予鼓掌,以便其他人可以找到它!

您可以在Medium上关注我以获取新文章。 另外,在LinkedIn上与我联系 推特

如果您有任何评论,问题或建议,请随时在下面的评论部分中发布它们!