在使用Xcode发布app或使用真机调试时,为什么需要证书,为什么添加了UUID的手机能安装,苹果是怎么对我们的app进行签名的,为什么iOSapp只能在iPhone手机上运行?下面将简单介绍下苹果的签名机制。
RSA加密
RSA加密是一种非对称加密算法,使用私钥加密公钥解密或公钥加密私钥解密的方式对数据进行加解密。
CSR文件
在mac电脑中,通过钥匙串访问-->证书助理可申请CSR文件。CSR文件是一串base64加密之后的代码,它即是由mac电脑生成的公钥。
iOS Certificates
通过CSR文件,可在app develop生成证书文件。在生成过程中,苹果会通过服务器的私钥对CSR文件进行加密,并对加密之后的文件再次使用MD5加密,防止证书被篡改。最后生成的证书即是我们要使用到的ios.cer文件。
双击安装cer文件后,将会生成与CSR对应的私钥,此时,由mac电脑生成的公私钥已经完成。
加密APP
使用Xcode进行打包时,会使用mac生成的私钥对app进行数字签名,并将cer文件及iOS Provisioning Profiles等文件一并打包,最后生成的app即是一个经过签名的app。
解密APP
iphone手机在出厂时,苹果会对每台手机预安装操作系统,操作系统中有一项文件,此文件即是由苹果服务器私钥产生的公钥。在安装app时,iphone会先使用此公钥对app中的证书进行解密(每个app的证书都是使用苹果服务器的私钥进行RSA加密的),解密之后再进行MD5校验,校验通过后,解密出来的文件包含了mac电脑生成的公钥。
之后使用mac公钥再次对app的machO文件进行解密,也就是说在安装app过程中,手机会对app进行两次RSA解密,最终解密出来的文件即是app的可执行文件。
简略图
网友评论