成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

iOS 中的代碼簽名(二)—— 代碼簽名的實(shí)際過(guò)程

GraphQuery / 3557人閱讀

摘要:在上一篇中的代碼簽名一數(shù)字簽名基本概念中,我們簡(jiǎn)單解釋了數(shù)字簽名證書的基本概念以及實(shí)際作用,在這一篇,我們主要結(jié)合應(yīng)用的上傳過(guò)程來(lái)說(shuō)說(shuō)代碼簽名的實(shí)際過(guò)程。參考,從這里可以獲取一些安全知識(shí)的大概了解,這里詳細(xì)解釋了數(shù)字簽名認(rèn)證的過(guò)程

在上一篇iOS 中的代碼簽名(一)—— 數(shù)字簽名基本概念中,我們簡(jiǎn)單解釋了數(shù)字簽名、證書的基本概念以及實(shí)際作用,在這一篇,我們主要結(jié)合應(yīng)用的上傳過(guò)程來(lái)說(shuō)說(shuō)代碼簽名的實(shí)際過(guò)程。

1. 獲取 signing identity 與證書

首先在我們的系統(tǒng)鑰匙串的系統(tǒng)根證書列表中,是存在著蘋果的 Root CA 簽發(fā)的根證書的。

在我們第一次打開 Xcode 的時(shí)候,Xcode 會(huì)在系統(tǒng)的鑰匙串中添加蘋果的『Apple Worldwide Developer Relations Certification Authority』,這個(gè)證書是被根證書信任的,這樣我們就建立了可信的證書信任鏈。

在蘋果的官方文檔中,將數(shù)字簽名用到的公鑰和私鑰統(tǒng)稱為 Signing Indetity,在 iOS 的打包發(fā)布過(guò)程中,我們首先需要做的就是去生成公鑰私鑰并從蘋果那里獲得證書。

首先,我們需要?jiǎng)?chuàng)建公鑰和私鑰,在 OSX 中我們可以通過(guò)鑰匙串訪問(wèn)的證書助理創(chuàng)建一個(gè)CertificateSigningRequest.certSigningRequest文件,當(dāng)這個(gè)文件穿件完畢后,鑰匙串中的密鑰項(xiàng)目中就會(huì)多出一對(duì)公鑰和私鑰。此時(shí)的公鑰和私鑰還是孤立的狀態(tài)。

CertificateSigningRequest.certSigningRequest文件的內(nèi)容也很簡(jiǎn)單,就是我們剛剛創(chuàng)建好的公鑰內(nèi)容。(使用 vim 打開查看,實(shí)際上的公鑰和私鑰一般都是這樣子的一串很長(zhǎng)的字符序列)

接下來(lái)我們要做的就是把這個(gè)文件上傳到蘋果的 MemberCenter (簡(jiǎn)稱 MC 哈),然后 MC 會(huì)利用我們的公鑰和個(gè)人信息生成對(duì)應(yīng)的證書。我們接下來(lái)點(diǎn)擊下載并雙擊證書,在鑰匙串里頭就會(huì)把證書和對(duì)應(yīng)的公鑰私鑰進(jìn)行關(guān)聯(lián)。

這樣,我們就擁有了屬于我們自己的,獨(dú)一無(wú)二的 signing identity。

2. 創(chuàng)建 Provisioning Profile

當(dāng)我們成功創(chuàng)建證書以后,我們一般還需要在蘋果的 MC 上添加我們 APP 的 bundle ID 和設(shè)備的 UUID,最后我們需要在 MC 上針對(duì)證書、bundle ID 、bundle ID 對(duì)應(yīng)的能力以及對(duì)應(yīng)的設(shè)備進(jìn)行配置,最終生成一個(gè)mobileprovision文件,這個(gè)文件的細(xì)節(jié)我們將會(huì)在下一篇進(jìn)行講解,現(xiàn)在我們先記住這個(gè)文件中保存了我們創(chuàng)建的證書列表就好。

3. 對(duì)代碼的產(chǎn)物進(jìn)行簽名

當(dāng)我們完成開發(fā)后,會(huì)使用 Xcode 的 Archive(存檔) 的功能進(jìn)行打包,當(dāng)我們點(diǎn)擊了 Archive 以后,Xcode 就會(huì)對(duì)我們的代碼進(jìn)行編譯和鏈接,最終產(chǎn)生一個(gè)后綴為.app文件(嚴(yán)格意義上來(lái)說(shuō)這是一個(gè)文件夾,是 Mac 上的包文件,終端里頭是把這個(gè)文件當(dāng)做文件夾對(duì)待的)。然后 Xcode 會(huì)把對(duì)應(yīng)的mobileprovision文件拷貝到 APP 文件中(這個(gè)文件就是我們?cè)谇懊媾渲?provision profile 后下載下來(lái)的文件),這一步的詳情可以在 Archive 的 log 中的『Process product packaging』這一步中看到;再之后,Xcode 會(huì)使用codesign這個(gè)命令對(duì) APP 文件進(jìn)行簽名。

如果我們有多個(gè) Signing Identity,我們也可以在工程『Build Settings』選項(xiàng)中進(jìn)行配置

那具體codesign命令是如何進(jìn)行簽名的呢?一個(gè)沒(méi)有被簽名的 APP 文件的結(jié)構(gòu)類似這樣:

TestOC.app
├── Base.lproj
│   ├── LaunchScreen.storyboardc
│   │   ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib
│   │   ├── Info.plist
│   │   └── UIViewController-01J-lp-oVM.nib
│   └── Main.storyboardc
│       ├── BYZ-38-t0r-view-8bC-Xf-vdC.nib
│       ├── Info.plist
│       └── UIViewController-BYZ-38-t0r.nib
├── Info.plist
├── PkgInfo
├── TestOC(二進(jìn)制文件)
└── embedded.mobileprovision

codesign 在對(duì) APP 文件進(jìn)行簽名的時(shí)候,會(huì)把對(duì)應(yīng)的簽名直接添加到二進(jìn)制文件的內(nèi)部,而針對(duì)資源文件則是利用一個(gè)叫做 『CodeResources』的 plist 文件把對(duì)應(yīng)的資源文件和數(shù)字簽名進(jìn)行記錄。簽名結(jié)束后的 APP 文件的內(nèi)容如下:

TestOC.app
├── Base.lproj
│   ├── LaunchScreen.storyboardc
│   │   ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib
│   │   ├── Info.plist
│   │   └── UIViewController-01J-lp-oVM.nib
│   └── Main.storyboardc
│       ├── BYZ-38-t0r-view-8bC-Xf-vdC.nib
│       ├── Info.plist
│       └── UIViewController-BYZ-38-t0r.nib
├── Info.plist
├── PkgInfo
├── TestOC
├── _CodeSignature
│   └── CodeResources
└── embedded.mobileprovision

最后,我們可以使用 Xcode 打包生成對(duì)應(yīng)的 ipa ,方便之后安裝到設(shè)備上。

4. iOS 設(shè)備進(jìn)行驗(yàn)證

在 iOS 設(shè)備這一端,蘋果的相關(guān)證書在出廠設(shè)置系統(tǒng)的時(shí)候就已經(jīng)設(shè)置好了,所以可以認(rèn)為其和蘋果的通信是安全的。iOS 設(shè)備在得到 ipa 之后,首先會(huì)把 ipa 進(jìn)行解壓,然后通過(guò) APP 文件中的 mobileprovision 文件去下載其對(duì)應(yīng)的證書,然后從證書中取得開發(fā)者的公鑰,從而對(duì) ipa 進(jìn)行了數(shù)字簽名的認(rèn)證。

參考

About Software Security,從這里可以獲取一些安全知識(shí)的大概了解

Cryptography Concepts In Depth,這里詳細(xì)解釋了數(shù)字簽名認(rèn)證的過(guò)程

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11202.html

相關(guān)文章

  • 匠心打造canvas簽名組件

    摘要:原文匠心打造簽名組件導(dǎo)讀月又是項(xiàng)目吃緊的時(shí)候,一大波需求襲來(lái),猝不及防??梢韵却吝@里體驗(yàn)把后面將要提到的簽名組件。剩下的也是綁定事件中關(guān)鍵的一步。設(shè)置完成了上述功能,一個(gè)簽名插件就已經(jīng)成型了。 本文首發(fā)于CSDN網(wǎng)站,下面的版本又經(jīng)過(guò)進(jìn)一步的修訂。原文:匠心打造canvas簽名組件 導(dǎo)讀 6月又是項(xiàng)目吃緊的時(shí)候,一大波需求襲來(lái),猝不及防。 度過(guò)了漫長(zhǎng)而煎熬的6月,是時(shí)候總結(jié)一波。最近移...

    MAX_zuo 評(píng)論0 收藏0
  • iOS 代碼簽名(一)—— 數(shù)字簽名基本概念

    摘要:在繼續(xù)深入了解之前,首先要了解一些關(guān)于數(shù)字簽名的基本概念,關(guān)于這些基本概念,阮一峰的這篇博客已經(jīng)做了非常好的解釋,可以先移步一看。 在繼續(xù)深入了解之前,首先要了解一些關(guān)于數(shù)字簽名的基本概念,關(guān)于這些基本概念,阮一峰的這篇博客已經(jīng)做了非常好的解釋,可以先移步一看。 如果用 A 來(lái)表示文章中的鮑勃,B 來(lái)表示蘇珊,Z 來(lái)表示道格,那么文章最后的所描述的情況可以用下圖來(lái)表示: showImg...

    Lavender 評(píng)論0 收藏0
  • IOS微信上Vue單頁(yè)面應(yīng)用JSSDK簽名失敗解決方案

    摘要:路由守衛(wèi)內(nèi)觸發(fā)更新簽名獲取真實(shí)有效微信簽名此處需要自行處理在路由守衛(wèi)內(nèi)更新簽名,保證是使用當(dāng)前頁(yè)面,是使用目標(biāo)路由完整地址再加上域名使用簽名調(diào)用在使用的頁(yè)面通過(guò)取出緩存的微信簽名,然后進(jìn)行簽名。 背景 手機(jī)型號(hào): 型號(hào):iphone 7 / iphone xs max版本:ios 10.3.1 / ios 12.1微信版本:WeChat 6.7.3 問(wèn)題還原: Vue應(yīng)用(vue-ro...

    lixiang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<