iOS重簽名(2018最新):完全重簽名和不完全重簽名

最近有朋友需要幫忙用公司企業(yè)證書打包企業(yè)內(nèi)側(cè)應(yīng)用光涂,經(jīng)過本人搜集、采坑嗤栓,目前最簡單、可靠地重簽名解決方案(企業(yè)證書可非企業(yè)證書均可)箍邮,分享給需要的童鞋茉帅。

首先感謝醉雨清風(fēng)無私奉獻(xiàn),下面廢話少說直接開擼

現(xiàn)在主流的重簽名有兩種:

1. 完全重簽名(更改Bundle ID)

證書锭弊,mobileprovision堪澎、Bundle ID三者信息對應(yīng)一致,這種重簽名方式基本上與直接對代碼進(jìn)行簽名的效果是一樣的;

優(yōu)點(diǎn):有效期長味滞、穩(wěn)定性高樱蛤;

缺點(diǎn):維護(hù)成本較高,每一個(gè)重簽名的ipa都必須修改Bundle ID并且獨(dú)享一套證書和mobileprovision文件桃犬;

適用范圍:對簽名效果穩(wěn)定性有要求的公司和團(tuán)隊(duì)刹悴;

不完全重簽名(不更改Bundle ID)

只保證證書mobileprovision對應(yīng)一致,至于這兩者與原ipaBundle ID等信息是否一致則不考慮攒暇;

優(yōu)點(diǎn):看起來較方便維護(hù)土匀;

缺點(diǎn):實(shí)際上并沒有對原ipa的簽名進(jìn)行完全替換,很容易重簽名失敗形用,穩(wěn)定性不高就轧,多則一兩個(gè)月,少則三五天就可能發(fā)生簽名失效田度,需要重新簽名妒御,慎用!镇饺!

適用范圍:市面上出售企業(yè)證書進(jìn)行重簽名的個(gè)人賣家乎莉;

下面詳細(xì)說下重簽名相關(guān)的知識以及這兩種重簽名的方法,大家一起學(xué)習(xí)探討奸笤。

在了解重簽名之前惋啃,我們先要了解下iOS 簽名機(jī)制以及作用

簽名機(jī)制的目的

在 iOS 出來之前,在主流操作系統(tǒng)(Mac/Windows/Linux)上開發(fā)和運(yùn)行軟件是不需要簽名的监右,軟件隨便從哪里下載都能運(yùn)行边灭,導(dǎo)致平臺對第三方軟件難以控制,盜版流行健盒。蘋果希望解決這樣的問題绒瘦,在 iOS 平臺對第三方 APP 有絕對的控制權(quán)称簿,一定要保證每一個(gè)安裝到 iOS 上的 APP 都是經(jīng)過蘋果官方允許的,怎樣保證呢惰帽?就是通過簽名機(jī)制憨降。

簽名機(jī)制的實(shí)現(xiàn)

說到簽名機(jī)制的實(shí)現(xiàn),就不得不提各種證書善茎、mobileprovision券册、Entitlements频轿、CertificateSigningRequest垂涯、p12AppID這些概念性的東西每一個(gè)拿出來說都是需要很大篇幅的航邢,我們在這里不講概念耕赘,就簡單說下他們是如何來實(shí)現(xiàn)IPA簽名的功能的。

iOS簽名主要用到的有證書mobileprovision這兩個(gè)文件膳殷,其他文件(CertificateSigningRequest操骡、AppID)都是為了生成這兩種文件而存在,或者是這兩種文件在的衍生文件(P12赚窃、Entitlements)册招,當(dāng)簽名代碼時(shí),會將證書文件勒极、mobileprovision一起寫入是掰,同時(shí)為了管控APP 的其他權(quán)限,Xcode 會生成Entitlements文件,這些文件辱匿、資源和代碼最終都會以ipa文件的形式導(dǎo)出

通過解壓ipa文件的結(jié)構(gòu)也可以看出一些問題:

ipa內(nèi)部文件結(jié)構(gòu)

資源文件:例如圖片键痛、html、等等匾七。

CodeSignature/CodeResources:這是一個(gè)plist文件絮短,可用文本查看,其中的內(nèi)容就是是程序包中(不包括Frameworks)所有文件的簽名昨忆。注意這里是所有文件丁频。意味著你的程序一旦簽名,就不能更改其中任何的東西邑贴,包括資源文件和可執(zhí)行文件本身席里。iOS系統(tǒng)會檢查這些簽名;

可執(zhí)行文件:此文件跟資源文件一樣需要簽名痢缎;

mobileprovision:次文件用來校驗(yàn)證書文件胁勺、Bundle ID、独旷,從MC上生成的署穗。

Frameworks:程序引用的非系統(tǒng)自帶的Frameworks寥裂,每個(gè)Frameworks其實(shí)就是一個(gè)app,其中的結(jié)構(gòu)應(yīng)該和app差不多案疲,也包含簽名信息CodeResources文件

上述這些文件組合在一起封恰,共同實(shí)現(xiàn)了ipa的簽名功能。

了解了簽名原理褐啡,我們再來了解下iOS系統(tǒng)驗(yàn)證簽名有效性的過程诺舔,只有了解這個(gè)過程才能更好的重簽名

iOS 系統(tǒng)驗(yàn)證簽名有效性的過程

iOS 系統(tǒng)驗(yàn)證簽名有效性的過程

解壓ipa;

取出embedded.mobileprovision备畦,通過簽名校驗(yàn)是否被篡改過低飒;

校驗(yàn)所有文件的簽名,包括Frameworks;

驗(yàn)證授權(quán)設(shè)備是否符合embedded.mobileprovision文件中的信息;

比對Info.plist里面的BundleId是否符合embedded.mobileprovision文件中的信息;

簽名和驗(yàn)證簽名的原理都了解了懂盐,接下來我們就可以對癥下藥褥赊,進(jìn)行重簽名

重簽名的實(shí)現(xiàn)

既然簽名是由證書mobileprovision共同實(shí)現(xiàn),那么重簽名的過程其實(shí)就是將新的證書mobileprovision替換舊文件的過程莉恼,但由于系統(tǒng)在驗(yàn)證app是否合法的時(shí)候還會隨機(jī)驗(yàn)證授權(quán)設(shè)備列表和Bundle ID拌喉、所以必須修改Bundle ID新的mobileprovision中的信息保持一致,否則將會有驗(yàn)證失敗的風(fēng)險(xiǎn)俐银。

完全重簽名就是采用完全替換的方式尿背,所以在面對Apple的合法性校驗(yàn)的時(shí)候,不會有任何問題捶惜;

不完全重簽名由于忽視了Bundle ID校驗(yàn)這一環(huán)節(jié)田藐,簽名不穩(wěn)定,有效期很短售躁!

重簽名的操作

完全重簽名

完全重簽名現(xiàn)在很多工具都可以實(shí)現(xiàn)了坞淮,我們公司用到的是Fastlane中的resign功能,我這邊介紹一種更輕量級的GUI工具iReSign陪捷,使用非常簡單回窘,一張圖即可說明。

iReSign使用說明

注意:選擇重簽名的描述文件和重簽名的證書文件時(shí)市袖,一定要配套啡直,同時(shí)一定要勾選修改ID,并將App ID修改為與重簽名的描述文件中的APP ID 一致苍碟,切記酒觅!

2. 不完全重簽名

不完全重簽名的方式需要用到一種比較老的工具iOS_resign_scripts

這個(gè)工具提供三種重簽名的腳本,但是據(jù)我個(gè)人血淚踩坑微峰,只有舷丹。。第三種方式有效蜓肆,前兩種已經(jīng)失效了颜凯。谋币。。

方法:

將重簽名腳本ios_resign_with_ipa和 要重簽名的ipa症概、mobileprovision放入同一個(gè)文件夾蕾额;

cd 到文件夾中

執(zhí)行代碼

$shios_resign_with_ipa$source_ipa_file$Developer_code_sign$mobileprovision$target_app_related_path

注意:source_ipa_file待重簽名的ipa名稱。target_app_related_path重簽名后ipa的名稱$Developer_code_sign用到的證書名稱彼城。$mobileprovision描述文件名稱

Example:

$shios_resign_with_ipa Testerhome.ipa"iPhone Developer: hengjie chen (XXXXXXXX)"embedded.mobileprovision Testerhome-resigned.ipa

成功之后诅蝶,上傳重簽名過的ipa安裝可以完美運(yùn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市募壕,隨后出現(xiàn)的幾起案子调炬,更是在濱河造成了極大的恐慌,老刑警劉巖司抱,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筐眷,死亡現(xiàn)場離奇詭異,居然都是意外死亡习柠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門照棋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來资溃,“玉大人,你說我怎么就攤上這事烈炭∪芏В” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵符隙,是天一觀的道長趴捅。 經(jīng)常有香客問我,道長霹疫,這世上最難降的妖魔是什么拱绑? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮丽蝎,結(jié)果婚禮上猎拨,老公的妹妹穿的比我還像新娘。我一直安慰自己屠阻,他們只是感情好红省,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著国觉,像睡著了一般吧恃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麻诀,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天痕寓,我揣著相機(jī)與錄音缸逃,去河邊找鬼。 笑死厂抽,一個(gè)胖子當(dāng)著我的面吹牛需频,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筷凤,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼昭殉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藐守?” 一聲冷哼從身側(cè)響起挪丢,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卢厂,沒想到半個(gè)月后乾蓬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慎恒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年任内,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片融柬。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡死嗦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粒氧,到底是詐尸還是另有隱情越除,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布外盯,位于F島的核電站摘盆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饱苟。R本人自食惡果不足惜孩擂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掷空。 院中可真熱鬧肋殴,春花似錦、人聲如沸坦弟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酿傍。三九已至烙懦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赤炒,已是汗流浹背氯析。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工亏较, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掩缓。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓雪情,卻偏偏與公主長得像,于是被迫代替她去往敵國和親你辣。 傳聞我的和親對象是個(gè)殘疾皇子巡通,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容