一直都沒有細(xì)想過蘋果的簽名機(jī)制埠忘,今天突然間想到,所以研究了一下,在此記錄莹妒,作為學(xué)習(xí)資料使用名船。如有問題,歡迎留言訂正~
因?yàn)樘O果的安全策略旨怠,通過簽名機(jī)制保證手機(jī)上的每個(gè)APP都是經(jīng)過蘋果認(rèn)證的渠驼。ioser都知道蘋果的APP安裝方式有四種:
1.通過App Store安裝
2.開發(fā)者通過xcode安裝
3.Ad-hoc測試證書打包的APP,數(shù)量限制100
4.In-house 企業(yè)版證書打包的APP鉴腻,信任企業(yè)證書后可以使用
一. 通過App Store安裝的APP
通過App Store安裝
- 由蘋果生成一對公私鑰迷扇,公鑰內(nèi)置在iOS設(shè)備中,私鑰由蘋果保管爽哎。
- 開發(fā)者上傳APP給蘋果審核后蜓席,蘋果用私鑰對APP數(shù)據(jù)進(jìn)行簽名,發(fā)布至App Store课锌。
- iOS設(shè)備下載APP后厨内,設(shè)備內(nèi)公鑰進(jìn)行驗(yàn)簽,若正確渺贤,則證明該APP是蘋果認(rèn)證過的雏胃。
二. 通過xcode安裝(真機(jī)調(diào)試)
由于真機(jī)調(diào)試時(shí)不需要提交蘋果審核,所以蘋果無法對APP進(jìn)行簽名志鞍,因此瞭亮,蘋果采用了雙重簽名的機(jī)制,Mac電腦上有一對公私鑰述雾,蘋果還是原來的一對公私鑰街州。
- 開發(fā)過程中需要真機(jī)調(diào)試時(shí),需要從鑰匙串中的證書中心創(chuàng)建證書請求文件(CSR)玻孟,并傳至蘋果服務(wù)器唆缴。
- 蘋果使用私鑰對CSR簽名,生成一份包含Mac公鑰信息及Apple對它的簽名黍翎,即證書(CER:開發(fā)證書或者發(fā)布證書)
- 編譯完一個(gè)APP 后面徽,Mac電腦使用私鑰對App進(jìn)行簽名。
- 在安裝APP時(shí)匣掸,根據(jù)當(dāng)前配置把CER證書一起打包進(jìn)App趟紊。
- iOS設(shè)備通過內(nèi)置的Apple的公鑰驗(yàn)證CER是否正確,證書驗(yàn)證確保Mac公鑰是經(jīng)過蘋果認(rèn)證的碰酝。
- 再使用CER文件中Mac的公鑰去驗(yàn)證App的簽名是否正確霎匈,確保安裝行為是經(jīng)過蘋果允許的。
三. 通過Ad-hoc正式打包安裝
Xcode打包App生成ipa文件送爸,通過iTunes或者蒲公英等第三方發(fā)布平臺铛嘱,安裝到手機(jī)上暖释。流程上同真機(jī)調(diào)試相同,差別在第四步:
- 開發(fā)過程中需要真機(jī)調(diào)試時(shí)墨吓,需要從鑰匙串中的證書中心創(chuàng)建證書請求文件(CSR)球匕,并傳至蘋果服務(wù)器。
- 蘋果使用私鑰對CSR簽名帖烘,生成一份包含Mac公鑰信息及Apple對它的簽名亮曹,即證書(CER:開發(fā)證書或者發(fā)布證書)
- 編譯完一個(gè)APP 后,Mac電腦使用私鑰對App進(jìn)行簽名秘症。
- 編譯簽名完成后照卦,要導(dǎo)出ipa文件,導(dǎo)出時(shí)乡摹,需要選擇一個(gè)保存的方法:App Store窄瘟,Ad-hoc,Enterprise,Development,就是選擇將上一步生成的CER一起打包進(jìn)App。
- iOS設(shè)備通過內(nèi)置的Apple的公鑰驗(yàn)證CER是否正確训桶,證書驗(yàn)證確保Mac公鑰是經(jīng)過蘋果認(rèn)證的烟勋。
- 再使用CER文件中Mac的公鑰去驗(yàn)證App的簽名是否正確财搁,確保安裝行為是經(jīng)過蘋果允許的。
四. In-House企業(yè)版證書打包
企業(yè)版證書簽名驗(yàn)證流程和Ad-Hoc差不多,只是企業(yè)版不限制設(shè)備數(shù)克婶,而且需要用戶在iOS設(shè)備上手動點(diǎn)擊信任證書筒严。
該文章參考地址:http://www.reibang.com/p/7806ea264aea情萤,只為自己學(xué)習(xí)使用