相关设备:
1.Mac电脑,其中Mac电脑包含:
公钥--我们用公钥M表示,(M就表示Mac电脑,为了好区分,所以用公钥M表示)
私钥--公钥和私钥成对出现,私钥M表示
2.苹果服务器,其中服务器里面包含:
私钥A--(A就表示Apple,为了好区分,所以用私钥A表示)
3.iPhone手机,其中包含:
公钥A-- (与服务器私钥A成对)
重点:公钥M-私钥M成对;私钥A-公钥A成对;
公钥M和私钥M可以相互验证;
私钥A和公钥A可以相互验证;
具体操作步骤:
1-本地创建csr文件,通过csr文件申请证书,主要是包含了公钥M,其次还有一些信息文件,邮箱地址,常用名称等等;
(本地创建了csr文件以后,可以通过命令查看该文件信息:“$openssl asn1parse -i -in 文件名.certSigningRequest” )
2-提交到苹果服务器以后一个描述文件,描述文件包含以下内容:
a.设备ID;
b.appID;
c.权限文件;
d.证书文件;
其中d,证书文件包含以下内容:
a.公钥M;
b.公钥M的HASH值;
c.公钥M的签名信息(用私钥A签名的信息);
前往文件夹,可以查看电脑里面的描述文件:~/资源库/MobileDevice/Provisioning Profiles/
cd到文件目录下,可以通过命令查看描述文件:$security cms -D -i 文件名.mobileprovision
3-Mac电脑安装证书文件,然后就可以对APP进行打包,打包的时候,就把证书文件,配置进了APP,APP其实就是一个文件夹,包含以下内容:
a.MachO 文件(一种可执行文件);
b.利用私钥M对MachO签名的文件;
c.描述文件--证书文件;
提示:P12文件,其实就是私钥M
4.可以将APP这个文件夹安装到iPhone手机上去,安装的时候进行以下验证:
1.首先验证文件夹里面的证书文件,利用手机里面的公钥A,对证书进行验证(证书包含公钥M签名,所以公钥A可以验证证),验证了证书是否被调包;
2.iPhone手机取出证书里面的公钥M,对app进行验证(因为app是用私钥M进行签名的);
这样的验证过程,验证了APP是否是苹果官方允许的应用,原因如下:
1.苹果允许你的行为,才会给你返回证书文件,给你电脑的公钥M配发证书;
2.有了这个证书,你才能打包APP,将APP安装到手机;
3.利用手机里面的公钥M,验证证书,就侧面的验证了安装行为是否非法;iPhone对app内容,并不做验证;
双向验证,其实,就是两对公私钥的验证!
这种模式,如果仅仅是这样,将有严重问题:APP可以任意安装到任何手机上;
所以,苹果公司又增加了多重限定:
1.限定设备(只能安装到注册过的手机上);
2.对APP进行限定,只能对某一个app进行签名;
3.还会针对性的进行推送,NFC等等进行限定;
苹果公司,把这一系列限定操作,统称为:授权文件(Entitlements文件),并将这个文件放在了一个叫做Provisioning Profile(描述文件)文件中;
描述文件是在appleDevelop网站创建的,(Xcode登陆appleID以后,它会代替网页自动创建),Xcode打包的时候,会打包进APP文件内;