簡介
由於最近企業籤掉得太嚴重了,上頭要求實現超級籤進行遊戲下載。故有了此文章,記錄一下過程。html
簽名原理其實很簡單,超級簽名的技術就是使用我的開發者帳號,將用戶的設備看成開發設備進行應用分發。這也致使成本很是高,一個開發者帳號最多隻能註冊一百臺設備,然而一個帳號的價格爲99美圓。不過目前超級籤分發的應用穩定性很高,不用再像企業籤那樣常常掉籤。node
新建 .mobileconfig 描述文件
該描述文件用於獲取用戶設備的UDID,用戶經過某個點擊操做下載此文件,安裝後服務器會收到該用戶設備的 UDID 回調事件。ios
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <dict> <key>URL</key> <string>https://[你的服務器地址].com/resource/uploadUUID.do</string> <!--接收數據的接口地址--> <key>DeviceAttributes</key> <array> <string>UDID</string> <string>IMEI</string> <string>ICCID</string> <string>VERSION</string> <string>PRODUCT</string> </array> </dict> <key>PayloadOrganization</key> <string>xxx.xxx.com</string> <!--組織名稱--> <key>PayloadDisplayName</key> <string>查詢設備UDID</string> <!--安裝時顯示的標題--> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadUUID</key> <string>c156f2f8-fc42-4260-8fc5-8644861d8293</string> <!--本身隨機填寫的惟一字符串,http://www.guidgen.com/ 能夠生成--> <key>PayloadIdentifier</key> <string>xxx.xxx.profile-service</string> <key>PayloadDescription</key> <string>本文件僅用來獲取設備ID</string> <!--描述--> <key>PayloadType</key> <string>Profile Service</string> </dict> </plist>
註冊開發者設備及簽名包體
因爲時間太趕,這裏註冊開發者設備及簽名包體採用的都是三方提供的服務,所以沒有細節提供,可是怎樣去作仍是能夠說一下的。web
咱們能夠藉助Spaceship
工具完成註冊新的開發者設備和更新Provisioning Profile
,簽名包體能夠用Sigh
框架,具體實現請自行搜索。後端
最後用戶下載的方式與企業籤的同樣,使用itms-services
協議進行下載。瀏覽器
ssl 簽名 .mobileconfig 配置文件
我看了不少文章,都是用開發者證書去簽名的,但是我弄了很久,死活從「未簽名」變成了「」還沒有驗證「,當時一度絕望了好長時間。從 iPhone 配置實用工具 2.2 到 iPhone 配置實用工具 3.5,皆不成功。安全
配置文件是可使用的,雖說安裝時會提示紅色字「還沒有驗證」,看起來不太安全以外,一切安好。但是要有追求啊,別人能作到的東西,那就是確定能作的。服務器
ssl 證書籤名配置文件是知道的,但是向後端人員要證書文件的時候一度受到了困擾,因此前期擱置了很久,直到其它的方法都被我試過了,都不行以後,只好繼續調研 ssl 證書籤名配置文件。app
踩完無數的坑以後,這裏介紹一種親測可用的方法,使用 ssl 證書進行配置文件的簽名。我是看這篇文章實現的爲iOS的mobileconfig配置文件進行簽名。框架
很簡單,須要三個文件,三行命令,完成。
$ openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaike.key -certfile ca-bundle.pem -outform der -nodetach $ openssl rsa -in mbaike.key -out mbaikenopass.key $ openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaikenopass.key -certfile ca-bundle.pem -outform der -nodetach
這裏耗時主要是在等運維人員提供相關證書文件,千萬別給錯了,不然很難 Debug。
下載描述文件後不能自動跳轉到安裝界面
在 iOS 12.2 上蘋果作了改動,下載完後須要用戶手動進行安裝。點擊 設置 —— 已下載描述文件,會自動彈出描述文件安裝界面,點擊右上角安裝便可。
官方說明點這兒在 iPhone 或 iPad 上安裝配置描述文件。
利用 .mobileprovision 跳轉到已下載描述文件
這是爲了方便用戶不需手動找描述文件並安裝,能夠直接跳過去,省去用戶操做。
-
從蘋果開發者網站中下載對應的發佈描述文件;
-
把發佈描述文件部署在服務器;
-
web 訪問服務器的發佈描述文件,如:
http://***.com/embedded.mobileprovision
; -
Done。
當執行第三步後,會自動跳轉至描述文件。
參考文獻
SSL Converter - Convert SSL Certificates to different formats
mobileconfig文件的簽名和認證(signed、verified)
經過Safari瀏覽器獲取iOS設備UDID(設備惟一標識符)
聲明
博文做者:GarveyCalvin
博文出處:http://www.cnblogs.com/GarveyCalvin/ 本文版權歸做者和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文連接,謝謝合做!