不管是互聯(lián)網技術的發(fā)展,還是科學技術的進步,都進一步影響了我們對于智能設備的需求,尤其是智能手機部分。而智能手機的構成部分就是APP軟件了,那么大家對于iOS簽名?App 的發(fā)展和原理或多或少有一些了解嗎:
iOS 簽名機制挺復雜,各種證書,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出錯,本文嘗試從原理出發(fā),一步步推出為什么會有這么多概念,希望能有助于理解 iOS App 簽名的原理和流程。
目的:先來看看蘋果的簽名機制是為了做什么。在 iOS 出來之前,在主流操作系統(tǒng)(Mac/Windows/Linux)上開發(fā)和運行軟件是不需要簽名的,軟件隨便從哪里下載都能運行,導致平臺對第三方軟件難以控制,盜版流行。蘋果希望解決這樣的問題,在 iOS 平臺對第三方 App 有絕對的控制權,一定要保證每一個安裝到 iOS 上的 App 都是經過蘋果官方允許的,怎樣保證呢?就是通過簽名機制
代碼簽名
在iOS出來之前,以前的主流操作系統(tǒng)(Mac/Windows)軟件隨便從哪里下載都能運行,系統(tǒng)安全存在隱患,盜版軟件、病毒入侵、靜默安裝等等。那么蘋果希望解決這樣的問題,要保證每一個安裝到 iOS 上的 APP 都是經過蘋果官方允許的,怎樣保證呢?就是通過代碼簽名。
如果要實現驗證,其實最簡單的方式:就是通過蘋果官方生成非對稱加密的一對公私鑰。在iOS的系統(tǒng)中內置一個公鑰,私鑰由蘋果后臺保存,我們傳APP到AppStore時,蘋果后臺用私鑰對APP數據進行簽名,iOS系統(tǒng)下載這個APP后,用公鑰驗證這個簽名,若簽名正確,這個APP肯定是由蘋果后臺認證的,并且沒有被修改過,也就達到了蘋果的需求:保證安裝的每一個APP都是經過蘋果官方允許的。
向簽名
蘋果需求
安裝包不需要上傳到App Store,可以直接安裝到手機上;
蘋果為了保證系統(tǒng)的安全性,又必須對安裝的APP有絕對的控制權:
① 經過蘋果允許才可以安裝;
② 不能被濫用導致非開發(fā)APP也能被安裝;
雙向簽名的原理
這里有兩個角色:一個是iOS系統(tǒng),還有一個就是Mac系統(tǒng),因為iOS的APP開發(fā)環(huán)境在Mac系統(tǒng)下,所以這個依賴關系成為了蘋果雙層簽名的基礎。