超級簽名-原理/機制/技術細節-徹底解析

隨着蘋果對於企業分發證書的頻繁吊銷和日益收緊,代簽名行業也隨之迭代出了黑科技,即所謂的超級簽名。html

超級簽名安裝流程演示git

從整個安裝流程上來看,超級簽名少了在設置裏面信任企業證書的步驟,體驗上要比企業分發更簡單和容易接受,同時分發價格也貴的離譜,不由讓人好奇這新瓶裏面到底裝的是什麼酒。github

今天就來幫你們解析一下其中的門門道道,以及這套機制的技術難點。瀏覽器

聽說某分發平臺價格表,來源網絡,本人對圖片真實性不負責

簽名原理

簽名原理其實就一句話,使用了蘋果提供給開發者的Ad-Hoc分發通道,把安裝設備當作開發設備進行分發。安全

既然簽名用是 Ad-Hoc ,那麼 Ad-Hoc 所具備的優劣勢也一併繼承了下來:服務器

優點:markdown

  1. 直接分發,安裝便可運行,不須要用戶作企業證書的信任操做
  2. 目前穩定,不會有證書吊銷致使的業務風險(後續蘋果政策風險很是高)

缺點:網絡

  1. 單開發者帳號的iPhone設備數量只有100個,致使分發成本很是高(99美圓/1年/100個設備)
  2. 開發者帳號須要預先寫入安裝設備的UDID,在工具鏈不通的狀況下,獲取用戶的UDID相對困難和繁瑣,並且手動寫入UDID不存在商用可行性,固然目前這個缺點被解決了

總體架構

接下來咱們就看看整套機制是如何進行的: 架構

總體架構

  1. 設備安裝描述文件後,會向服務器發送設備的UDID。
  2. 服務器收到UDID後,將UDID註冊到某個開發者帳號下。
  3. 再生成簽名用的描述文件,給IPA簽名。
  4. 而後iPA傳Server,使用itms-services方式讓用戶下載。

技術細節

使用配置文件獲取UDID

蘋果公司容許開發者經過IOS設備和Web服務器之間的某個操做,來得到IOS設備的UDID(包括其餘的一些參數)。這裏的一個概述:app

  1. 在你的Web服務器上建立一個.mobileconfig的XML格式的描述文件;
  2. 用戶在全部操做以前必須經過某個點擊操做完成.mobileconfig描述文件的安裝;
  3. 服務器須要的數據,好比:UDID,須要在.mobileconfig描述文件中配置好,以及服務器接收數據的URL地址;
  4. 當用戶設備安裝描述文件後,設備會回調你設置的URL,若是你的URL返回302跳轉的話,Safari瀏覽器會跳轉到你所給的地址;

Apple Developer Center 自動化工具

接下來的關鍵點就是如何在獲取到用戶的UDID以後,秒級完成註冊新的開發者設備+更新Provisioning Profile的。 這裏咱們須要藉助開源工具(Spaceship):

Spaceship公開了Apple Developer Center的API,並且執行速度比解析開發者Web頁面快兩個數量級,從而在很是短的時間內搞定Provisioning Profile。 這個框架解決了整套機制的關鍵問題,成爲整個工具鏈的基石。其實某平臺早就完成了UDID獲取和應用簽名分發的技術儲備,只差這套API。

下面是解析開發者Web頁面和直接訪問API的速度對比圖:

SpaceshipRecording

Cool!!!!!!! 很是棒!再次爲Spaceship鼓掌👏👏👏👏

如何自動簽名封包

此處其實應該有一萬個解決方案,經過命令行腳本/Python腳本/或者其餘第三方都能實現。

這裏推薦使用 Sigh 這個框架來解決這個問題。

Sigh的用法和配置都很是簡單,一個純命令工具,豐富的配置選項(自行查閱文檔),活躍的社區,徹底夠用了。

直接上演示圖:

OTA 分發已簽名的應用

emmmm 此處也應該有一萬個解決方案,那就選擇 AppDeploy 吧。入選緣由很是簡單,這個框架有Logo(看臉的社會就是那麼真實...)。

AppDeploy Logo

可視化部署流程以下圖(同時支持命令行調用):

Apk


結語

經過開源社區的力量,咱們成功搞清了整個機制上的關鍵技術點,必需要說fastlane團隊很是優秀的提供了工具鏈關鍵一環(Spaceship),從而使Ad-Hoc自動分發成爲可能。

蘋果對於App的分發審覈管控能夠說是很是嚴苛,這背後既有安全考慮,也有壟斷利益。但不管如何,對於終端用戶都是利大於弊的措施,App審覈保護了無數的手機用戶免受惡意程序的侵害。 我的強烈反對這種繞過審覈的分發形式。同時我要指出,分發平臺以這種狀況繞過蘋果的審覈是嚴重違反 APPLE 開發商計劃許可協議的3.3.3條款:

未經 Apple 預先書面覈准或依照第 3.3.25 條 (In-App Purchase API) 獲得容許,應用程序不可經由 App Store、Custom App Distribution 或 TestFlight 之外的分銷渠道提供、解鎖或激活附加的特徵或功能。

開源工具鏈

獲取設備UDID的第三方庫:

github.com/shaojiankui…

Apple Developer Center 自動化工具:

github.com/fastlane/fa…

自動簽名封包工具:

github.com/fastlane/fa…

OTA 分發應用工具:

github.com/atelierdumo…

參考資料

Over-the-Air Profile Delivery Concepts(獲取設備UDID官方文檔):developer.apple.com/library/arc…

APPLE 開發商計劃許可協議:download.developer.apple.com/Documentati…

本文由你的關注/點贊/評論贊助發表

相關文章
相關標籤/搜索