雙向簽名:
手機和蘋果服務(wù)器還有開發(fā)人員的MAC電腦,他們一共維護(hù)著2對公私鑰,利用這兩對公私鑰分別完成雙向簽名與驗證雷则,從而已到達(dá)蘋果服務(wù)器對蘋果手機里的appstore的控制權(quán),辨別此app是否是經(jīng)過授權(quán)的。
Mac電腦作為開發(fā)者的電腦褒繁,自己有一組公私鑰M,然后蘋果服務(wù)器自己有一個私鑰A馍忽,然后手機端保存了一份蘋果服務(wù)器的公鑰A棒坏。公鑰加密的文件只有對應(yīng)的私鑰才能解開,反之私鑰加密的文件只有對應(yīng)的公鑰才能解開遭笋。
第一步:從蘋果服務(wù)器獲取開發(fā)者證書過程
1.Mac先發(fā)送自己的公鑰M向服務(wù)器坝冕,請求app打包證書。
這里的公鑰M CSR文件從哪來呢瓦呼?他其實就是我們要生成證書之前從“鑰匙串訪問>證書助理”獲取的那個文件:這個文件很熟悉吧喂窟,這就是MAC端的公鑰M,當(dāng)然口說無憑央串,我們可以打開看一下磨澡。
openssl asn1parse -i -in CertificateSigningRequest.certSigningRequest
結(jié)果如下:注意這個紅圈的位置,他指定了采用sha256 RSA加密方式蹋辅。 這就是你與蘋果服務(wù)器之間的加密方式钱贯。
2.蘋果下發(fā)證書
蘋果拿到公鑰M之后,會采用自己的私鑰A對你的公鑰M和CSR文件里面的hash值進(jìn)行加密然后發(fā)送給你侦另,這個就是你申請到的開發(fā)者證書秩命。
為什么請求證書的MAC電腦可以直接打包編譯尉共,而給另一臺MAC就必須要給他P12文件才能編譯app? 其實就是因為你給別人P12文件里面包含了私鑰M弃锐,而直接給證書是不包含私鑰M的袄友。就是圖上的那個小鑰匙。
第二步:Mac電腦拿到證書后生成App
生成應(yīng)用的時候霹菊,Mac用自己的私鑰M對我們的App進(jìn)行了一次簽名剧蚣,然后將真正的可執(zhí)行文件Macho+App的簽名+蘋果下發(fā)的證書共同打包生成了我們的app包,這個就是安裝在手機的上的文件旋廷。
當(dāng)然口說無憑鸠按,我們可以對app包打開看一下
這里三個劃紅線的地方分別就是我們的APP簽名信息、Macho可以行文件饶碘、證書目尖。
第三步:驗證App是否有效
1.獲取公鑰M
我們的iphone利用自己的公鑰A,解開蘋果服務(wù)器私鑰A簽名的證書扎运,獲取到里面的公鑰M瑟曲。
2.利用公鑰M驗證簽名
利用得到的公鑰M繼續(xù)解開Mac電腦私鑰M的App簽名,從而驗證APP是否有效豪治。
這就是蘋果的APP的雙向簽名原理洞拨。