苹果cms打包appiOS签名授权机制

2019-07-11 07:33 栏目:苹果p12签名证书 查看(77)

  ios企业签名非对称加密算法需要两个密钥: 公开密钥(publickey )和 私有密钥(privatekey) 。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。(私钥是要保密的,公钥可以公开) RSA 是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 RSA 是以三个发明者的姓氏首字母组成的。数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。 摘要算法也可以理解为将任意长度的数据,通过一个算法,得到一个固定长度的数据。典型的摘要算法,比如大名鼎鼎的 MD5 和 SHA 。

  数字签名就是利用 非对称加密 和 摘要算法 来传输数据,保证数据的 完整性 和 合法性 。验证过程如下: 1. 发送方使用给一个摘要算法( MD5 )得到要发送数据的摘要,然后用自己的私钥和一个非对称加密算法( RSA )对得到的摘要加密,得到加密后的数据,然后将 要发送的数据 、 加密后的数据 、 摘要算法 和 加密算法 一同发送给接收方。 2. 接收方接收到数据后,根据指定的摘要算法( MD5 )得到实际要传输的数据的摘要,然后在根据指定的加密算法( RSA )和已有的公钥解密得到加密数据解密后的数据,最后比较解密后的数据和得到的摘要是否相同,如果相同就说明实际要传输的数据是完成的合法的。

  数字证书就是通过数字签名方式来传输的一段数据,iOS开发中的数字证书是Apple Worldwide Developer Relations Certification Authority(WWDR)证书认证中心数字签名过的数据,表面上我们看到的就是钥匙串中的证书,实际WWDR数字签名后的证书包含以下内容:

  下载生成的证书,双击安装就会出现在 钥匙串 中, 钥匙串 会根据证书中的公钥对应上本机器上的私钥。

  后续在程序上真机的过程中,会使用这个私钥,对代码进行签名,而公钥会附带在mobileprovision文件中,打包进app。

  所以,就算你有证书,但是如果没有对应的私钥是没有用的。那么有人要问了,既然私钥只有某台电脑生成的,那么团队开发怎么展开呢?将最初申请证书的机器的私钥导出成.p12文件,并让其他机器导入,同时其他机器也应该安装下载下来的证书。所以强烈建议CertificateSigningRequest.certSigningRequest需要保留,因为如果再次生成CertificateSigningRequest.certSigningRequest文件,可能就是对应另一个私钥了!还需要在共享一次私钥,会比较麻烦。

  通过 Xcode 指定要使用的证书,其实是 指定了签名过程中要使用的 私钥 ,因为这个私钥是和证书中的公钥相对应的。然后指定对应的 mobileprovision ,由于 mobileprovision 文件中包含了证书,实际上本地证书就是 Xcode 用来指定对应 私钥 用的。

  最后通过指定的私钥对需要签名的数据进行数字签名(编译过程在签名之前,这里省略了编译过程,编译后的二进制文件也是要签名的内容),最终将 ipa 包的形式输出, ipa 的文件结构如下:

  _CodeSignature/CodeResources: plist文件,内容是包内所有数据的数字签名。

  Frameworks: 程序引用的非系统自带的Frameworks。每个Framework的结构跟app其实差不多

  解压 ipa 包,获取 embedded.mobileprovision ,通过设备上的 Apple 公钥验证该文件的完整性和安全性。

  embedded.mobileprovision 文件验证通过,获取该文件内的用户证书,再通过设备上的 Apple 公钥验证该证书的完整性和安全性。

  证书验证通过后,获取证书内的我们开发者的公钥。然后通过开发者的公钥验证应用程序包内的数据的完整性和安全性。通过后即可安装。

扫二维码与IOS签名经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/ios企业签名咨询/签名价格咨询/技术建议/互联网交流

上一篇:苹果签名证书申请iOS App 签名的原理

下一篇:ios企业签名有哪些步骤和方法

郑重申明:IOS企业签名以外的任何单位或个人,不得使用该案例作为工作成功展示!