蘋果企業證書簽名和超級簽名


蘋果企業證書簽名

特點總結

1、隨時可分發APP

2、可接受Apple不可接受的APP

缺點總結

1、蘋果開發者賬號難求,據說最近炒到了50萬左右

2、市場上證書混亂,爛大街的證書不少

3、掉簽風險極高

4、掉簽后重新獲取用戶,運營成本加大

重簽名方法

工具

1、iOS APP Signer

2、iReSign

3、風車簽名管理(其它不安全,可能會有盜取賬號風險,特別是需要P12密碼的)

終端簽名

1、准備IPA后綴文件(Ad Hoc Deployment 打包)xx.mobileprovision文件(企業)

2、獲取證書里面的信息(xx.plist)

security cms -D -i xx.mobileprovision > xx.plist

3、導出xx.plist

/usr/libexec/PlistBuddy -x -c 'Print:xx項目名'  xx.plist > xx.plist

4、解壓ipa包

unzip xx.ipa

5、刪除舊簽名

rm -rf Payload/xx.app/_CodeSignature/

6、刪除動態庫簽名(所有framework都有需要執行此步驟)

①、刪除簽名rm -rf Payload/xx.app/Frameworks/xx.framework/_CodeSignature②、重新簽名codesign -f -s "證書的名稱" Payload/xx.app/Frameworks/xx.framework/

7、替換配置文件

cp xx.mobileprovision Payload/xx.app/

8、簽名

codesign -f -s "證書的名稱" --entitlements xx.plist Payload/xx.app

9、打包成ipa

zip-r new_xx.ipaPayload/

最終 new_xx.ipa就是重新簽名的文件

蘋果超級簽名

原理

說的明白一些,開發者可以在開發者后台添加手機的UDID,然后重新打包一個IPA文件,分發平台,然后被添加的UDID就可以下載

整體架構圖

 

圖1

特點總結

1、直接分發,安裝即可運行,不需要用戶做企業證書的信任操作

2、目前穩定,不會有證書吊銷導致的業務風險

缺點總結

1、單開發者賬號的iPhone設備數量只有100個,導致分發成本非常高(99美元/1年/100個設備)

XML制作細節

1、在你的Web服務器上創建一個.mobileconfig的XML格式的描述文件;

XML代碼如下

<?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"><plistversion="1.0"><dict><key>PayloadContent</key><dict><key>URL</key><string>一個接收UDID的網址</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>GuangdongQi</string><!--組織名稱--><key>PayloadDisplayName</key><string>AppFree</string><key>PayloadVersion</key><integer>1</integer><key>PayloadUUID</key><string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string><!--自己隨機填寫的唯一字符串,http://www.guidgen.com/ 可以生成--><key>PayloadIdentifier</key><string>com.gpon.profile-service</string><key>PayloadDescription</key><string>This temporary profile will be used to find and display your current device's UDID.</string><key>PayloadType</key><string>Profile Service</string></dict></plist>

注意

①、接收網址的地址需要SSL簽名,自簽名的不行,這也是蘋果強制https的一種方式吧

②、mobileconfig下載時設置文件內容類型Content Type為:application/x-apple-aspen-config(遇到問題的都是因為這個),或者像這里用一個簡單頁面做好下載mobileconfig文件,引導用戶安裝

2、服務器做一些301跳轉,存儲UDID等操作

自動化

注冊新的開發者設備+更新Provisioning Profile

接下來的關鍵點就是如何在獲取到用戶的UDID之后,秒級完成注冊新的開發者設備+更新Provisioning Profile的。 這里我們需要借助開源工具(spaceship):

 

Spaceship

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

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

 

SpaceshipRecording

自動簽名封包

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

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

 

image.png

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

直接上演示圖:

 

image

分發

不多說了,什么蒲公英,fir,各種小平台等等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM