在使用Xcode發(fā)布app或使用真機(jī)調(diào)試時(shí)嵌削,為什么需要證書吓歇,為什么添加了UUID的手機(jī)能安裝一铅,蘋果是怎么對(duì)我們的app進(jìn)行簽名的表窘,為什么iOSapp只能在iPhone手機(jī)上運(yùn)行典予?下面將簡(jiǎn)單介紹下蘋果的簽名機(jī)制。
RSA加密
RSA加密是一種非對(duì)稱加密算法乐严,使用私鑰加密公鑰解密或公鑰加密私鑰解密的方式對(duì)數(shù)據(jù)進(jìn)行加解密瘤袖。
CSR文件
在mac電腦中,通過鑰匙串訪問-->證書助理可申請(qǐng)CSR文件昂验。CSR文件是一串base64加密之后的代碼捂敌,它即是由mac電腦生成的公鑰。
iOS Certificates
通過CSR文件既琴,可在app develop生成證書文件黍匾。在生成過程中,蘋果會(huì)通過服務(wù)器的私鑰對(duì)CSR文件進(jìn)行加密呛梆,并對(duì)加密之后的文件再次使用MD5加密,防止證書被篡改磕诊。最后生成的證書即是我們要使用到的ios.cer文件填物。
雙擊安裝cer文件后,將會(huì)生成與CSR對(duì)應(yīng)的私鑰霎终,此時(shí)滞磺,由mac電腦生成的公私鑰已經(jīng)完成。
加密APP
使用Xcode進(jìn)行打包時(shí)莱褒,會(huì)使用mac生成的私鑰對(duì)app進(jìn)行數(shù)字簽名击困,并將cer文件及iOS Provisioning Profiles等文件一并打包,最后生成的app即是一個(gè)經(jīng)過簽名的app。
解密APP
iphone手機(jī)在出廠時(shí)阅茶,蘋果會(huì)對(duì)每臺(tái)手機(jī)預(yù)安裝操作系統(tǒng)蛛枚,操作系統(tǒng)中有一項(xiàng)文件,此文件即是由蘋果服務(wù)器私鑰產(chǎn)生的公鑰脸哀。在安裝app時(shí)蹦浦,iphone會(huì)先使用此公鑰對(duì)app中的證書進(jìn)行解密(每個(gè)app的證書都是使用蘋果服務(wù)器的私鑰進(jìn)行RSA加密的),解密之后再進(jìn)行MD5校驗(yàn)撞蜂,校驗(yàn)通過后盲镶,解密出來的文件包含了mac電腦生成的公鑰。
之后使用mac公鑰再次對(duì)app的machO文件進(jìn)行解密蝌诡,也就是說在安裝app過程中溉贿,手機(jī)會(huì)對(duì)app進(jìn)行兩次RSA解密,最終解密出來的文件即是app的可執(zhí)行文件浦旱。
簡(jiǎn)略圖