iOS重簽名注意

iOS重簽名注意,證書要用ADhoc那個(gè)用來分發(fā)的證書嫉戚,其余的沒什么好說的


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

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

證書愈犹,mobileprovisionBundle 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),就不得不提各種證書顽冶、mobileprovisionEntitlements售碳、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)行

作者:卿卿小可

鏈接:http://www.reibang.com/p/92821e8db5fa

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)裹纳,非商業(yè)轉(zhuǎn)載請注明出處塘娶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市痊夭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脏里,老刑警劉巖她我,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迫横,居然都是意外死亡番舆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門矾踱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恨狈,“玉大人,你說我怎么就攤上這事呛讲『痰。” “怎么了返奉?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吗氏。 經(jīng)常有香客問我芽偏,道長,這世上最難降的妖魔是什么弦讽? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任污尉,我火速辦了婚禮,結(jié)果婚禮上往产,老公的妹妹穿的比我還像新娘被碗。我一直安慰自己,他們只是感情好仿村,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布锐朴。 她就那樣靜靜地躺著,像睡著了一般奠宜。 火紅的嫁衣襯著肌膚如雪包颁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天压真,我揣著相機(jī)與錄音娩嚼,去河邊找鬼。 笑死滴肿,一個(gè)胖子當(dāng)著我的面吹牛岳悟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泼差,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贵少,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堆缘?” 一聲冷哼從身側(cè)響起滔灶,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吼肥,沒想到半個(gè)月后录平,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缀皱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年斗这,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啤斗。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡表箭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钮莲,到底是詐尸還是另有隱情免钻,我是刑警寧澤彼水,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站伯襟,受9級特大地震影響猿涨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姆怪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一叛赚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稽揭,春花似錦俺附、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揪胃。三九已至璃哟,卻和暖如春喊递,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骚勘。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俏讹,地道東北人当宴。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓户矢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親殉疼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

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