为什么要创建证书

2016-06-10  本文已影响60人  淇滨杜隆坦

一、代码签名需要

二、iOS 操作系统验证开发者身份和 APP 完整性

关于数字签名:

代码签名:

下面解释一下证书为什么要被 CA 签名,代码为什么要被开发者签名:
  1. 在 iOS 系统以及其它 Mac 设备内部,都拥有苹果的根证书 AppleWWDRCA.cer,里面包含了 AppleWWDRCA的公钥。
  2. iOS 系统用AppleWWDRCA的公钥对证书(.cer)中包含的数字签名(该签名是AppleWWDRCA用自己的私钥对证书签名的)进行解密,如果成功得到信息摘要 Signature1(经过 AppleWWDRCA使用私钥加密过的),则说明了证书的可信性。
  3. 然后对证书内容使用证书声明的哈希算法,计算出一个信息摘要 Signature2。
  4. 如果 Signature1 == Signature2,则说了明证书的完整性。
  5. 即 CA 用自己的私钥对证书签名的目的就是为了保证 iOS 系统拿到手中的是CA 自己颁发的权威证书,保证别人不能冒充 CA。
  6. iOS 系统用 CA 公钥解开证书上 CA 的私钥签名后,对照摘要一致后,就能确定这个证书就是 CA 颁发的。
  7. 数字签名的目的是保证通信双方没有被冒充。
  8. CA 签名是让 iOS 系统知道这个证书是 CA 颁发的
  9. 代码签名是让 iOS 系统知道这个 APP 的确是合法开发者编写的
  10. 在证书可信的前提下,iOS 系统成功提取出证书中包含的用户的真实公钥 Public Key。这个公钥就可以用于检验代码签名,或者用于加密通信。
  11. 用真实的用户公钥对 CodeSignature 里面所有代码/资源签名进行解密,得到一系列信息摘要 Signature-a1、Signature-b1、Signature-c1 etc.
  12. 假如所有信息摘要都正确被机密出来,则表明代码、资源文件是可信的,是完整的,能够合法地在该设备上运行。
上一篇下一篇

猜你喜欢

热点阅读