簡介
因為最近企業簽掉得太嚴重了,上頭要求實作超級簽進行游戲下載,故有了此文章,記錄一下程序,
簽名原理其實很簡單,超級簽名的技術就是使用個人開發者賬號,將用戶的設備當作開發設備進行應用分發,這也導致成本非常高,一個開發者賬號最多只能注冊一百臺設備,然而一個賬號的價格為99美元,不過目前超級簽分發的應用穩定性很高,不用再像企業簽那樣經常掉簽,
新建 .mobileconfig 描述檔案
該描述檔案用于獲取用戶設備的UDID,用戶通過某個點擊操作下載此檔案,安裝后服務器會收到該用戶設備的 UDID 回呼事件,
<?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>
注冊開發者設備及簽名包體
由于時間太趕,這里注冊開發者設備及簽名包體采用的都是三方提供的服務,因此沒有細節提供,但是怎樣去做還是可以說一下的,
我們可以借助Spaceship工具完成注冊新的開發者設備和更新Provisioning Profile,簽名包體可以用Sigh框架,具體實作請自行搜索,
最后用戶下載的方式與企業簽的一樣,使用itms-services協議進行下載,
ssl 簽名 .mobileconfig 組態檔
我看了很多文章,都是用開發者證書去簽名的,可是我弄了好久,死活從“未簽名”變成了“”尚未驗證“,當時一度絕望了好長時間,從 iPhone 配置實用工具 2.2 到 iPhone 配置實用工具 3.5,皆不成功,
組態檔是可以使用的,雖然說安裝時會提示紅色字“尚未驗證”,看起來不太安全之外,一切安好,可是要有追求啊,別人能做到的東西,那就是肯定能做的,
ssl 證書簽名組態檔是知道的,可是向后端人員要證書檔案的時候一度受到了困擾,所以前期擱置了好久,直到其它的方法都被我試過了,都不行之后,只好繼續調研 ssl 證書簽名組態檔,
踩完無數的坑之后,這里介紹一種親測可用的方法,使用 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,
當執行第三步后,會自動跳轉至描述檔案,
參考文獻
Create GUIDs online
SSL Converter - Convert SSL Certificates to different formats
mobileconfig檔案的簽名和認證(signed、verified)
iOS超級簽名
通過Safari瀏覽器獲取iOS設備UDID(設備唯一識別符號)
宣告
博文作者:GarveyCalvin
博文出處:http://www.cnblogs.com/GarveyCalvin/
本文著作權歸作者和博客園共有,歡迎轉載,但須保留此段宣告,并給出原文鏈接,謝謝合作!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/11425.html
標籤:iOS
