相關(guān)設(shè)備:
1.Mac電腦叁熔,其中Mac電腦包含:
公鑰--我們用公鑰M表示委乌,(M就表示Mac電腦,為了好區(qū)分荣回,所以用公鑰M表示)
私鑰--公鑰和私鑰成對(duì)出現(xiàn)福澡,私鑰M表示
2.蘋果服務(wù)器,其中服務(wù)器里面包含:
私鑰A--(A就表示Apple驹马,為了好區(qū)分革砸,所以用私鑰A表示)
3.iPhone手機(jī)除秀,其中包含:
公鑰A-- (與服務(wù)器私鑰A成對(duì))
重點(diǎn):公鑰M-私鑰M成對(duì);私鑰A-公鑰A成對(duì)算利;
公鑰M和私鑰M可以相互驗(yàn)證册踩;
私鑰A和公鑰A可以相互驗(yàn)證;
具體操作步驟:
1-本地創(chuàng)建csr文件效拭,通過csr文件申請(qǐng)證書暂吉,主要是包含了公鑰M,其次還有一些信息文件缎患,郵箱地址慕的,常用名稱等等;
(本地創(chuàng)建了csr文件以后挤渔,可以通過命令查看該文件信息:“$openssl asn1parse -i -in 文件名.certSigningRequest” )
2-提交到蘋果服務(wù)器以后一個(gè)描述文件肮街,描述文件包含以下內(nèi)容:
a.設(shè)備ID;
b.appID判导;
c.權(quán)限文件嫉父;
d.證書文件;
其中d,證書文件包含以下內(nèi)容:
a.公鑰M眼刃;
b.公鑰M的HASH值绕辖;
c.公鑰M的簽名信息(用私鑰A簽名的信息);
前往文件夾擂红,可以查看電腦里面的描述文件:~/資源庫/MobileDevice/Provisioning Profiles/
cd到文件目錄下仪际,可以通過命令查看描述文件:$security cms -D -i 文件名.mobileprovision
3-Mac電腦安裝證書文件,然后就可以對(duì)APP進(jìn)行打包昵骤,打包的時(shí)候树碱,就把證書文件,配置進(jìn)了APP涉茧,APP其實(shí)就是一個(gè)文件夾赴恨,包含以下內(nèi)容:
a.MachO 文件(一種可執(zhí)行文件);
b.利用私鑰M對(duì)MachO簽名的文件伴栓;
c.描述文件--證書文件伦连;
提示:P12文件,其實(shí)就是私鑰M
4.可以將APP這個(gè)文件夾安裝到iPhone手機(jī)上去钳垮,安裝的時(shí)候進(jìn)行以下驗(yàn)證:
1.首先驗(yàn)證文件夾里面的證書文件惑淳,利用手機(jī)里面的公鑰A,對(duì)證書進(jìn)行驗(yàn)證(證書包含公鑰M簽名饺窿,所以公鑰A可以驗(yàn)證證)歧焦,驗(yàn)證了證書是否被調(diào)包;
2.iPhone手機(jī)取出證書里面的公鑰M,對(duì)app進(jìn)行驗(yàn)證(因?yàn)閍pp是用私鑰M進(jìn)行簽名的)绢馍;
這樣的驗(yàn)證過程向瓷,驗(yàn)證了APP是否是蘋果官方允許的應(yīng)用,原因如下:
1.蘋果允許你的行為舰涌,才會(huì)給你返回證書文件猖任,給你電腦的公鑰M配發(fā)證書;
2.有了這個(gè)證書瓷耙,你才能打包APP朱躺,將APP安裝到手機(jī);
3.利用手機(jī)里面的公鑰M搁痛,驗(yàn)證證書长搀,就側(cè)面的驗(yàn)證了安裝行為是否非法;iPhone對(duì)app內(nèi)容鸡典,并不做驗(yàn)證源请;
雙向驗(yàn)證,其實(shí)轿钠,就是兩對(duì)公私鑰的驗(yàn)證巢钓!
這種模式病苗,如果僅僅是這樣疗垛,將有嚴(yán)重問題:APP可以任意安裝到任何手機(jī)上;
所以硫朦,蘋果公司又增加了多重限定:
1.限定設(shè)備(只能安裝到注冊(cè)過的手機(jī)上)贷腕;
2.對(duì)APP進(jìn)行限定,只能對(duì)某一個(gè)app進(jìn)行簽名咬展;
3.還會(huì)針對(duì)性的進(jìn)行推送泽裳,NFC等等進(jìn)行限定;
蘋果公司破婆,把這一系列限定操作涮总,統(tǒng)稱為:授權(quán)文件(Entitlements文件),并將這個(gè)文件放在了一個(gè)叫做Provisioning Profile(描述文件)文件中祷舀;
描述文件是在appleDevelop網(wǎng)站創(chuàng)建的瀑梗,(Xcode登陸appleID以后,它會(huì)代替網(wǎng)頁自動(dòng)創(chuàng)建)裳扯,Xcode打包的時(shí)候抛丽,會(huì)打包進(jìn)APP文件內(nèi);