轉(zhuǎn)載:
http://www.cocoachina.com/ios/20170602/19427.html
1.在你的 Mac 開發(fā)機(jī)器生成一對(duì)公私鑰鼻弧,這里稱為公鑰L,私鑰L耍攘。L:Local
2.蘋果自己有固定的一對(duì)公私鑰仁期,跟上面 AppStore 例子一樣藏杖,私鑰在蘋果后臺(tái),公鑰在每個(gè) iOS 設(shè)備上北启。這里稱為公鑰A卜朗,私鑰A。A:Apple
3.把公鑰 L 傳到蘋果后臺(tái)咕村,用蘋果后臺(tái)里的私鑰 A 去簽名公鑰 L场钉。得到一份數(shù)據(jù)包含了公鑰 L 以及其簽名,把這份數(shù)據(jù)稱為證書懈涛。
4.在蘋果后臺(tái)申請(qǐng) AppID逛万,配置好設(shè)備 ID 列表和 APP 可使用的權(quán)限,再加上第③步的證書批钠,組成的數(shù)據(jù)用私鑰 A 簽名泣港,把數(shù)據(jù)和簽名一起組成一個(gè) Provisioning Profile 文件,下載到本地 Mac 開發(fā)機(jī)价匠。
5.在開發(fā)時(shí)当纱,編譯完一個(gè) APP 后,用本地的私鑰 L 對(duì)這個(gè) APP 進(jìn)行簽名踩窖,同時(shí)把第④步得到的 Provisioning Profile 文件打包進(jìn) APP 里坡氯,文件名為embedded.mobileprovision,把 APP 安裝到手機(jī)上洋腮。
6.在安裝時(shí)箫柳,iOS 系統(tǒng)取得證書,通過系統(tǒng)內(nèi)置的公鑰 A啥供,去驗(yàn)證embedded.mobileprovision的數(shù)字簽名是否正確悯恍,里面的證書簽名也會(huì)再驗(yàn)一遍。
7.確保了embedded.mobileprovision里的數(shù)據(jù)都是蘋果授權(quán)以后伙狐,就可以取出里面的數(shù)據(jù)涮毫,做各種驗(yàn)證瞬欧,包括用公鑰 L 驗(yàn)證APP簽名,驗(yàn)證設(shè)備 ID 是否在 ID 列表上罢防,AppID 是否對(duì)應(yīng)得上艘虎,權(quán)限開關(guān)是否跟 APP 里的 Entitlements 對(duì)應(yīng)等。