iOS 檢測是否安裝描述文件及Https在iOS的信任鏈驗證

前提 :

1.當(dāng)前iOS 官方文檔沒有明確檢驗是否安裝描述文件的直接使用方法,都是間接檢測(以安裝mdm的描述文件為例,官方文檔好像提到了通過每隔一段時間輪詢設(shè)備 /或者嘗試發(fā)送mdm推送查看服務(wù)器 查看是否有反饋 來檢測某個設(shè)備是否安裝描述文件),

圖片 2.png

參考鏈接 :
https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/MobileDeviceManagementProtocolRef/6-MDM_Best_Practices/MDM_Best_Practices.html#//apple_ref/doc/uid/TP40017387-CH5-SW2

2.如果當(dāng)前設(shè)備安裝的描述文件中,必須包含一個自簽名的證書(即非蘋果內(nèi)嵌的信任的CA機構(gòu)頒發(fā)的CA證書,無法直接在蘋果系統(tǒng)直接就通過認證,),我們可以自己做一個簽名文件,一起放到描述文件中,輔助我們完成這個功能

                iOS 中HTTPS的攜帶的證書是否信任檢測機制

1.安裝iOS系統(tǒng)的時候 ,iOS系統(tǒng)中會包含很多知名的的CA機構(gòu)頒發(fā)的CA根證書,不同的iOS版本 包含的機構(gòu)不同,具體查看下面的鏈接
參考鏈接 :https://support.apple.com/zh-cn/HT204132

  1. 當(dāng)客戶端或者iOS系統(tǒng)去訪問一個https的服務(wù)器(以Server替代)時,Server會返回一個數(shù)字證書,數(shù)字證書包含當(dāng)前Server的公鑰,當(dāng)前證書的簽發(fā)機構(gòu)(包含簽發(fā)機構(gòu)的信任鏈),當(dāng)前證書的有效期,序列號等等信息
image.png
image.png

3.當(dāng)客戶端收到服務(wù)器給的返回的證書(此處只討論信任鏈模塊的檢測,先不討論具體的通信的校驗),去校驗證書的有效性,分為兩種情形:

A : 當(dāng)前證書的信任鏈的根證書 在當(dāng)前系統(tǒng)的可信任列表中
服務(wù)器會根據(jù)證書中包含的信息(有效期等待)簡單判斷是否在有效期,如果在有效期,在查看證書的信任鏈,找到該證書的上級頒發(fā)機構(gòu),如果找到,再去找當(dāng)前頒發(fā)機構(gòu)的上級機構(gòu),一直往上找,直到找到該CA機構(gòu)頒發(fā)的根證書(自己給自己簽名的證書),如果該根證書的CA頒發(fā)機構(gòu)在當(dāng)前系統(tǒng)的頒發(fā)機構(gòu)的信任列表中(即上面提到那個系統(tǒng)植入的所有的信任機構(gòu)),然后根據(jù)根證書的公鑰,再一級一級的將下級信任鏈上的公鑰一一解密,(通過上級簽發(fā)機構(gòu)的公鑰解密下級機構(gòu)的公鑰),直到解密到當(dāng)前證書的公鑰,查看與當(dāng)前證書的公鑰是否一致,如果一致,可以信任. 否則,不可以信任,如果是瀏覽器,會提示有證書不可信等等警示信息(不同于自簽名的提示),如果是app,應(yīng)該會主動中斷鏈接,網(wǎng)絡(luò)報errcode -999,被取消.

image.png

B : 當(dāng)前證書的信任鏈的根證書 不在當(dāng)前系統(tǒng)的可信任列表中

服務(wù)器會根據(jù)證書中包含的信息(有效期等待)簡單判斷是否在有效期,如果在有效期,在查看證書的信任鏈,找到該證書的上級頒發(fā)機構(gòu),如果找到,再去找當(dāng)前頒發(fā)機構(gòu)的上級機構(gòu),一直往上找,直到找到該CA機構(gòu)頒發(fā)的根證書(自己給自己簽名的證書),如果該根證書的CA頒發(fā)機構(gòu)在當(dāng)前系統(tǒng)的頒發(fā)機構(gòu)的信任列表中(即上面提到那個系統(tǒng)植入的所有的信任機構(gòu)),如果該根證書不在系統(tǒng)的信任列表中(自簽名類型),如果是瀏覽器,瀏覽器會給出提醒,如果是我們自己開發(fā)的app,就會進入證書挑戰(zhàn)(在<NSURLSessionTaskDelegate>和<NSURLSessionDelegate>這兩個代理中,didReceiveChallenge這個方法中,前者比后者的方法多了一個task,系統(tǒng)會優(yōu)先調(diào)用后者,后者沒有實現(xiàn),會去調(diào)用前者),我們可以在這個方法中處理當(dāng)前證書的校驗(以AFNetworking的代碼為例):
注意綠色框 框出的方法,是處理域名校驗的處理

image.png
                                    域名校驗的部分代碼
image.png

我們需要在這里面處理我們的挑戰(zhàn),根據(jù)我們的策略,一般都是在我們bundle里面嵌入證書,處理是否和我們自簽名的一致,如果直接就返回可以信任的話,會有風(fēng)險,這就是好多自簽名的服務(wù)器,一般客戶端bundle中會包含這個證書,專門處理這個挑戰(zhàn),
ps:其實客戶端處理這個挑戰(zhàn),信任的時候 就是將這個證書臨時加入了系統(tǒng)信任的根證書里面,到時候我們的正式校驗就通了,就相當(dāng)于走了A情形了.

                         關(guān)于描述文件是否安裝的檢驗邏輯

當(dāng)客戶端安裝描述文件的時候,描述文件會獲取用戶的授權(quán),描述文件中如果包含自簽名的證書,如果用戶同意了安裝并且安裝,該自簽名的正式理論上也是被系統(tǒng)信任的了,所以系統(tǒng)的信任列表中會包含該證書,一旦用戶卸載了描述文件,該系統(tǒng)中的信任列表中,該自簽名的證書的也會被移除,基于這個機制,我們可以通過判斷該證書是否被系統(tǒng)信任,來判斷當(dāng)前是否按照描述文件,下面是校驗代碼,通過bundle中的描述文件,來判斷當(dāng)前設(shè)備是否受系統(tǒng)信任
客戶端讀取證書信息(可以是多個證書),生成證校驗對象,并且設(shè)置信任策略,根據(jù)
證書當(dāng)前的OSStatus的值來判斷是否受系統(tǒng)信任,注意區(qū)別上面的域名信任的時候的那個設(shè)置方法,方便理解.

image.png

iOS11之前,這樣判斷就可以

image.png

iOS 11就需要這樣了,對于信任的枚舉值類型 增加了一個 (但是這個不太靠譜,正在評估)
2017.09.20更新

到此.描述文件是否本地安裝的校驗機制就走完了,這是我的理解,有錯誤請指出,共同學(xué)習(xí),謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市恤左,隨后出現(xiàn)的幾起案子棺聊,更是在濱河造成了極大的恐慌迈螟,老刑警劉巖忘渔,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機壶唤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棕所,“玉大人闸盔,你說我怎么就攤上這事×帐。” “怎么了迎吵?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長针贬。 經(jīng)常有香客問我钓觉,道長,這世上最難降的妖魔是什么坚踩? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任荡灾,我火速辦了婚禮,結(jié)果婚禮上瞬铸,老公的妹妹穿的比我還像新娘批幌。我一直安慰自己,他們只是感情好嗓节,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布荧缘。 她就那樣靜靜地躺著,像睡著了一般拦宣。 火紅的嫁衣襯著肌膚如雪截粗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天鸵隧,我揣著相機與錄音绸罗,去河邊找鬼。 笑死豆瘫,一個胖子當(dāng)著我的面吹牛珊蟀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播外驱,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼育灸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昵宇?” 一聲冷哼從身側(cè)響起磅崭,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓦哎,沒想到半個月后砸喻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柔逼,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年恩够,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡铲。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜂桶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出也切,到底是詐尸還是另有隱情扑媚,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布雷恃,位于F島的核電站疆股,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏倒槐。R本人自食惡果不足惜旬痹,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讨越。 院中可真熱鬧两残,春花似錦、人聲如沸把跨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽着逐。三九已至崔赌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耸别,已是汗流浹背健芭。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秀姐,地道東北人吟榴。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像囊扳,于是被迫代替她去往敵國和親吩翻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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