zoukankan      html  css  js  c++  java
  • iOS证书签名

    苹果官方有一对密钥,即私钥和公钥,私钥在苹果后台,公钥在iOS系统中(如iPhone手机在出厂后,其中就保存有苹果官方的公钥);在Mac系统打包app时也会生成一对密钥(私钥、公钥),并保存在钥匙串中。为了区分这两对密钥,将苹果官方的那对密钥记为A,即私钥A、公钥A;将Mac系统生成的那对密钥记为M,也就是私钥M、公钥M。


    下面我们分析一下 iOS的签名原理(包括签名与验证):

    1. XCode在向苹果服务器申请证书前,会先向钥匙串申请一个CSR文件,同时生成一对非对称加密密钥,也就是私钥M和公钥M,并将公钥M放在CSR中。
    2. XCode把CSR文件发送给苹果服务器,用于申请证书。
    3. 苹果服务器用私钥A对收到的公钥M进行签名,生成Certificate文件(即证书,后缀名为.cer,里面有公钥M)。接着对Certificate、Devices、App ID以及Entitlements一起组成的数据用私钥A进行签名,生成Provisioning Profile(即描述文件),并将它发给XCode。
    4. iOS项目在编译完成之后会生成.app文件,你可以在XCode的Project中找到它。有了.app文件,XCode先使用私钥M对.app进行签名,然后,把.app和描述文件一起压缩成安装包.ipa文件。
    1. XCode准备把安装包安装在苹果设备(如iPhone)上。
    1. iPhone对安装包进行验证,即用公钥A验证描述文件中的签名。验证通过则说明描述文件里的数据是苹果授权的。
    2. 当第【6】步验证通过后,再用公钥A验证证书中的签名。验证通过则说明公钥M是安全可信任的。
    3. 第【7】步验证通过后,就可以取出描述文件里的数据做各种验证,包括用公钥M验证App签名,验证iPhone是否在设备列表中,App ID是否对得上,使用的权限是否跟Entitlements对应等。当这些全部验证通过,iPhone就可以安装app了。

    以上就是iOS签名的流程分析了,也就是iOS签名原理。显然,苹果用了两对非对称加密密钥,进行的是双重验证,基本保证了XCode真机调试的安全性,确保app的安装行为是受到苹果管控的。

  • 相关阅读:
    ThinkPHP 5 中AJAX跨域请求头设置方法【转】
    phpstorm激活大全【转】
    PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】
    php的dirname(__FILE__)和dirname(dirname(__FILE__))使用总结【转】
    php 设置临时内存和超时设置脚本最大执行时间
    mysql 实现表连接(左,右,内,全连接)【转】
    Maximum execution time of 30 seconds exceeded解决办法【转】
    常用邮箱SMTP服务器地址大全
    叉积(POJ
    乘法逆元(P3811)(四种方法)
  • 原文地址:https://www.cnblogs.com/fightinglikeKobe/p/13755516.html
Copyright © 2011-2022 走看看