iOS 打包預(yù)備

本文首發(fā)在我的個(gè)人博客: http://blog.shenyuanluo.com/
,喜歡的朋友歡迎訂閱。

做 iOS 開發(fā)的都知道,打包必需準(zhǔn)備好 證書配置文件;沒有這兩個(gè),將無法打包給別人測試或者上傳 App Store。

那什么是證書?什么是配置文件呢?要了解這兩個(gè)東西,先來了解一下其原理。

簽名

我們知道,數(shù)據(jù)在傳輸過程中,安全性很重要;接收方怎么判斷接收到的數(shù)據(jù)是 完整的 并且是 合法的 呢?

  1. 完整性:是指數(shù)據(jù)自發(fā)送方發(fā)出后,在到達(dá)接收方的過程當(dāng)中未發(fā)生任何改動(dòng)、丟失。
  2. 合法性:是指 接收方 接收到的數(shù)據(jù)是來自可信賴的 發(fā)送方。

MD5消息摘要算法

MD5 消息摘要算法(MD5 Message-Digest Algorithm):是一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。

MD5 摘要

完整性

發(fā)送方通過 MD5 算法 對數(shù)據(jù)生成 摘要(Digest),然后把數(shù)據(jù)和摘要一起傳輸;接收方在接收到數(shù)據(jù)之后,通過同樣的 MD5 算法對數(shù)據(jù)部分生成摘要,再通過對比接收的摘要是否一致來判斷數(shù)據(jù)是否完整。

數(shù)據(jù)完整性

對稱加密

對稱加密(Symmetric-key algorithm):是在 加密解密 時(shí)使用相同的密鑰,或是使用兩個(gè)可以簡單地相互推算的密鑰的一種算法。

對稱加密

非對稱加密

非對稱加密(Asymmetric-key algorithm):是需要兩個(gè)秘鑰,一個(gè)是公開秘鑰,另一個(gè)是私有秘鑰;使用其中一個(gè) 秘鑰進(jìn)行加密,加密后的密文只能用對應(yīng)的 另一個(gè) 秘鑰進(jìn)行解密的一種算法。

非對稱加密

合法性

發(fā)送方 使用非對稱加密算法中的一個(gè)秘鑰對數(shù)據(jù)進(jìn)行加密,接收方 使用對應(yīng)的另一個(gè)秘鑰對接收到的數(shù)據(jù)進(jìn)行解密,如果可以解密,則認(rèn)為這數(shù)據(jù)是合法的。(理論上:對稱加密也是可以的。)

數(shù)據(jù)合法性

數(shù)字簽名

數(shù)字簽名(Digital Signature):通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名,另一個(gè)用于驗(yàn)證。

常見的數(shù)字簽名形式:

  1. 發(fā)送方通過 MD5 算法 對數(shù)據(jù)生成 摘要,然后使用 非對稱加密算法 其中一個(gè)秘鑰對摘要進(jìn)行加密得到 簽名,之后將數(shù)據(jù)和簽名一起傳輸;
  2. 接收方在接收到數(shù)據(jù)之后,使用對應(yīng)的另一個(gè)秘鑰對簽名進(jìn)行解密得到摘要,驗(yàn)證數(shù)據(jù)的合法性,然后再對數(shù)據(jù)通過 MD5 算法 生成摘要,對比解密得到的摘要,驗(yàn)證數(shù)據(jù)的完整性。
    數(shù)字簽名

由此可見 數(shù)字簽名 對數(shù)據(jù)的安全傳輸提供了有力的保障。但是,這樣的保障是有前提的,那就是必需保證 發(fā)送方的公鑰是絕對安全的。要不然,偽造公鑰的第三方,可以發(fā)送 病毒數(shù)據(jù) 給接收方,而接收方卻使用 的公鑰,錯(cuò)誤驗(yàn)證了 病毒數(shù)據(jù) 是 “完整且是可信賴” 的,這樣的后果將不堪設(shè)想。

由此可見,保障 公鑰 的安全是多么的重要;但是怎么保證發(fā)送方公鑰的安全呢?這就需要 數(shù)字證書 來保障了。

證書

數(shù)字證書(Digital Certificate):是互聯(lián)網(wǎng)通訊中標(biāo)志通訊各方身份信息的一串?dāng)?shù)字,提供了一種在 Internet 上驗(yàn)證通信實(shí)體身份的方式,數(shù)字證書不是數(shù)字身份證,而是身份認(rèn)證機(jī)構(gòu)蓋在數(shù)字身份證上的一個(gè)章或?。ɑ蛘哒f加在數(shù)字身份證上的一個(gè)簽名)。它是由權(quán)威機(jī)構(gòu)——CA機(jī)構(gòu),又稱為證書授權(quán)(Certificate Authority)中心發(fā)行的。

數(shù)字證書認(rèn)證機(jī)構(gòu)

數(shù)字證書認(rèn)證機(jī)構(gòu)(Certificate Authority,縮寫為CA):是負(fù)責(zé)發(fā)放和管理數(shù)字證書的權(quán)威機(jī)構(gòu),并作為電子商務(wù)交易中受信任的第三方,承擔(dān)公鑰體系中公鑰的合法性檢驗(yàn)的責(zé)任。

通常的做法是:

  1. 發(fā)送方將 公鑰 交給 “Internet” 可信任的 數(shù)字證書認(rèn)證機(jī)構(gòu),然后該機(jī)構(gòu)利用非對稱加密算法用 CA的私鑰 對發(fā)送方的公鑰和一些相關(guān)信息(如:有效期、發(fā)送方基本信息等)進(jìn)行加密,得到 證書,之后將數(shù)據(jù)、簽名和證書一起傳輸;
  2. 接收方接收到數(shù)據(jù)之后,對證書部分使用該機(jī)構(gòu)對應(yīng)的 CA的公鑰 進(jìn)行解密得到 發(fā)送方公鑰,之后利用該公鑰對簽名進(jìn)行解密驗(yàn)證其合法性和完整性。
    數(shù)字證書

由此可知道,在網(wǎng)絡(luò)上安全的傳輸數(shù)據(jù),一般需要兩對密鑰:發(fā)送方公私鑰 以及 CA 的公私鑰

iOS 簽名認(rèn)證

我們知道,在 Apple 的生態(tài)圈中,安裝的任何軟件都是需要經(jīng)過 Apple 認(rèn)證才被允許安裝的。那么怎么對 iOS 平臺(tái)的 APP 進(jìn)行安全認(rèn)證呢?

其大致流程如下:

  1. 在 maxOS 本地生成一對秘鑰;
  2. 上傳 公鑰CA(Apple 開發(fā)者中心)申請數(shù)字證書;
  3. 安裝數(shù)字證書,此時(shí)在鑰匙串中會(huì)存在一個(gè)證書以及該證書對應(yīng)的本地的私鑰;
  4. iOS APP 打包時(shí),Xcode 利用本地的私鑰對 APP 進(jìn)行簽名;
  5. 將證書、簽名 和 APP 上傳 App Store(或給測試人員);
  6. iOS 設(shè)備安裝 APP 時(shí),使用設(shè)備內(nèi)置的(CA)公鑰解密證書,進(jìn)而對該 APP 進(jìn)行驗(yàn)證其安全性和完整性。
iOS簽名認(rèn)證

小結(jié)

說了這么久,那到底什么是 iOS 證書配置文件 呢?

  1. iOS 證書:就是 iOS 開發(fā)者將 macOS 本地的公鑰 上傳至 Apple 開發(fā)者中心,通過 CA私鑰macOS 公鑰 和開發(fā)者的一些信息進(jìn)行加密得到的數(shù)字證書。
  2. iOS 配置文件(Provisioning Profile):是包含了對應(yīng)的證書、開發(fā)組名、組內(nèi)設(shè)備、應(yīng)用 ID 以及一些能力等配置信息的文件。

參考

  1. 如何理解 iOS 的簽名證書機(jī)制
  2. What is a Digital Signature?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過一個(gè)加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的出現(xiàn)...
    納蘭三少閱讀 2,045評論 1 6
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過一個(gè)加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的出現(xiàn)...
    sunny沖哥閱讀 1,512評論 0 3
  • 前言 文中首先解釋加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過一個(gè)加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的...
    sunny沖哥閱讀 3,198評論 0 2
  • 本文轉(zhuǎn)載,出處如下:數(shù)字證書原理 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過一個(gè)加密通信過程的例子說明了...
    隨安居士閱讀 1,812評論 1 8
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過一個(gè)加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的出現(xiàn)...
    已認(rèn)證用戶閱讀 3,987評論 1 4

友情鏈接更多精彩內(nèi)容