關(guān)于MDM分為以下幾個(gè)步驟操作來(lái)介紹:
- iOS MDM詳解(1)— 初識(shí)和深入
- iOS MDM詳解(2)— 證書(shū)的制作
- iOS MDM詳解(3)— 生成mobileconfig配置文件
- iOS MDM詳解(4)— 安裝mobileconfig配置文件
- iOS MDM詳解(5)— 給設(shè)備發(fā)個(gè)指令操作
一、MDM介紹
MDM - Moblie Device Management 移動(dòng)設(shè)備管理,目的就是讓企業(yè)能夠方便的管理 iPhone、Pad等移動(dòng)設(shè)備。
當(dāng)企業(yè)大量的使用移動(dòng)設(shè)備辦公或涉及到一些安全限制時(shí)設(shè)備管理的作用就能明顯的體現(xiàn)出來(lái),通過(guò)MDM IT人員門(mén)能夠在企業(yè)環(huán)境下安全地注冊(cè)設(shè)備,無(wú)線配置和更新設(shè)置,監(jiān)督公司政策的遵守情況,還能遠(yuǎn)程擦除或鎖定被管理的設(shè)備。例如(很多電子廠一線員工上班期間都不讓帶手機(jī),害怕不法分子隨便拍照泄露產(chǎn)品信息,如果此時(shí)引入MDM則可以再上班期間禁止員工的手機(jī)攝像頭的應(yīng)用,其他也不影響手機(jī)使用)。
通過(guò)MDM能實(shí)現(xiàn)以下操作:
- 安裝和刪除一個(gè)描述文件
- 安裝和刪除一個(gè)配置文件
- 獲取已安裝的描述文件列表
- 獲取已安裝的配置文件列表
- 獲取已安裝的證書(shū)列表
- 獲取已安裝的第三方的應(yīng)用列表
- 應(yīng)用的安裝與刪除
- 獲取設(shè)備信息(UDID、Languages、DeviceID、BatteryLevel等)
- 獲取安全相關(guān)的信息
- 設(shè)備鎖屏、重啟、關(guān)機(jī)、清除密碼、數(shù)據(jù)擦除
- 獲取已啟用的約束列表
- 鎖住、定位已丟失的設(shè)備
- 設(shè)備相關(guān)的設(shè)置管理、設(shè)備名稱(chēng)、壁紙、移動(dòng)網(wǎng)絡(luò)等
- 設(shè)置已安裝的應(yīng)用屬性
- 獲得可更新的系統(tǒng)的信息
- 安裝一個(gè)文件或書(shū)籍
等等還有其他很多細(xì)微的功能沒(méi)有全部列出來(lái)。是不是感覺(jué)MDM的功能很多很強(qiáng)大,如果你以前沒(méi)有了解過(guò)它,肯定會(huì)很驚奇、沒(méi)有越獄的設(shè)備居然還能夠這樣搞?O(∩_∩)O 是的,MDM就是這么強(qiáng)大,所以在企業(yè)應(yīng)用部署及設(shè)備管理能發(fā)揮很大的作用。
雖然MDM的功能那么多,我們?cè)趯?shí)際應(yīng)用中也就是涉及到,鎖屏及密碼刪除、APP的安裝和刪除、配置文件的安裝和刪除、獲取已安裝的APP列表及其他設(shè)備相關(guān)的信息,也就是說(shuō)常用的操作也就那幾個(gè)。
二、關(guān)于
剛開(kāi)始接觸MDM我也一臉的懵逼,不知道該從何著手??粗W(wǎng)上零零散散的資料,問(wèn)題涉及到的也是支離破碎,真不到他們是否具體操作過(guò)?有沒(méi)有實(shí)際跑通?反正各大論壇的也都是轉(zhuǎn)來(lái)轉(zhuǎn)去,可能有的人理解了,做出來(lái)了,但是寫(xiě)的也是一概而過(guò),真正的按照步驟操作時(shí)也是一團(tuán)漿糊。沒(méi)辦法,我只能硬著頭皮去看官方資料,因?yàn)槠渌杏玫馁Y料帶來(lái)的信息太少了。
經(jīng)過(guò)幾個(gè)月的學(xué)習(xí)和了解、對(duì)MDM認(rèn)知也慢慢的清晰了好多。至此我們的管理平臺(tái)也跑通了,正打算部署到企業(yè)內(nèi)部使用。所以我想好好的總結(jié)一下,把做過(guò)的,想過(guò)的,遇到的問(wèn)題一步一步的記錄下來(lái),或許能夠幫助你更好的理解MDM、快速的使用MDM。
三、MDM工作流程
引用官網(wǎng)提供的一張圖:

從上圖可以看出要實(shí)現(xiàn)MDM服務(wù)須涉及到,蘋(píng)果推送服務(wù)器APNs、自己的或者第三方提供的MDM服務(wù)器、受管理的設(shè)備。實(shí)際中三者之間通過(guò)HTTPS相互通信,所以推送和普通APP推送一樣必須要有推送證書(shū)。沒(méi)有操作的情況下,除了設(shè)備本身和APNs之間保持連接,其他都不在連接狀態(tài)。各自在系統(tǒng)中的作用如下:
- MDM服務(wù)器:對(duì)于設(shè)備,通過(guò)它發(fā)送指令對(duì)設(shè)備進(jìn)行管理,獲取相關(guān)信息及操作,回應(yīng)響應(yīng)設(shè)備操作。對(duì)于APNs,向APNs發(fā)送一個(gè)命令,目的來(lái)喚醒設(shè)備去主動(dòng)連接MDM服務(wù)器,報(bào)告其當(dāng)前狀態(tài)是否處于空閑(若設(shè)備空閑,MDM服務(wù)器會(huì)繼續(xù)下一步操作比如開(kāi)始發(fā)送指令)。
- APNs:可看作其他兩者之間的信使,主要就是轉(zhuǎn)發(fā)MDM服務(wù)器指令給設(shè)備,意思告訴設(shè)備開(kāi)始去連接服務(wù)器啦。
- 設(shè)備:首先通過(guò)Safari訪問(wèn)服務(wù)器安裝一個(gè)配置描述文件(下文敘述)并登記注冊(cè)使其成為受管理的設(shè)備,當(dāng)收到APNs指令后,根據(jù)已安裝的配置文件的url 連接MDM服務(wù)器并報(bào)告其狀態(tài),然后接受下一步命令比如命令
DeviceInformation
(查詢(xún)?cè)O(shè)備信息如ModelName、BatteryLevel、WiFiMAC等),設(shè)備收到XML格式的指令后再向服務(wù)器傳送其相關(guān)查詢(xún)的信息,如果不需要繼續(xù)發(fā)送指令,服務(wù)器關(guān)閉連接。
另外設(shè)備和MDM服務(wù)器之間數(shù)據(jù)傳輸都是以XML格式形式,以PUT請(qǐng)求的方式進(jìn)行的,所以發(fā)送指令時(shí),服務(wù)器要把指令封裝成一個(gè)XML的文件同時(shí)要實(shí)現(xiàn)PUT請(qǐng)求相關(guān)操作處理。APNs所發(fā)送的僅僅是一個(gè)與設(shè)備本身相關(guān)的標(biāo)示符,沒(méi)有其他命令,目的就是喚醒設(shè)備去連接MDM服務(wù)器。
四、要做的操作及我遇到過(guò)的問(wèn)題
通過(guò)以上了解可看出,要實(shí)現(xiàn)一個(gè)完整的MDM服務(wù),我們需要:制作APNs推送證書(shū)、設(shè)備安裝的配置文件、實(shí)現(xiàn)https通信、實(shí)現(xiàn)MDM相關(guān)協(xié)議、學(xué)習(xí)MDM協(xié)議相關(guān)命令及使用、一個(gè)MDM服務(wù)器(這里不作主要敘述,因?yàn)檫@些相關(guān)的都是有我們后臺(tái)做的)。所以接下來(lái)的時(shí)間我打算依次做以下任務(wù)。
- iOS MDM詳解(1)— 初識(shí)和深入
- iOS MDM詳解(2)— 證書(shū)的制作
- iOS MDM詳解(3)— 生成mobileconfig配置文件
- iOS MDM詳解(4)— 安裝mobileconfig配置文件
- iOS MDM詳解(5)— 給設(shè)備發(fā)個(gè)指令操作
以上即為MDM服務(wù)中幾個(gè)關(guān)鍵的操作,其他的一些細(xì)微的方面的操作以后在慢慢整理。
正常情況下操作我遇到了以下幾個(gè)問(wèn)題:
問(wèn)題1、 mobileconfig配置文件安裝失敗
設(shè)備在安裝過(guò)程中,一直提示安裝失??!當(dāng)我想使用抓包工具`Charles`查看時(shí)居然安裝成功了,關(guān)閉軟件再次安裝還是失敗,猜測(cè)可能由于`Charles`代理的作用能連接到還處于內(nèi)網(wǎng)的MDM Server,若直接發(fā)布到外網(wǎng)應(yīng)該能避免這個(gè)問(wèn)題(目前還沒(méi)有驗(yàn)證?)。
問(wèn)題2、MDM服務(wù)器與APNs無(wú)法建立連接,造成一直推送不成功
推送命令時(shí)Java后臺(tái)一直報(bào)錯(cuò),*`javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found`* 后來(lái)升級(jí)了SKD錯(cuò)誤解除。
隨之又出現(xiàn)錯(cuò)誤 Software caused connection abort: recv failed
后經(jīng)排查原來(lái)連接的是開(kāi)發(fā)環(huán)境的地址,mobileconfig配置中有這個(gè)配置選項(xiàng)默認(rèn)是生成環(huán)境,通過(guò)identity.apple.com/pushcert申請(qǐng)的推送證書(shū)只能是生成環(huán)境的證書(shū),這一點(diǎn)我當(dāng)時(shí)還傻傻的以為生成和推送都一樣呢??。
問(wèn)題3、命令推送成功后設(shè)備沒(méi)有響應(yīng)操作或者很慢
命令推送成功了有時(shí)沒(méi)響應(yīng),多數(shù)都是在MDM Server 與 APNs之間,估計(jì)設(shè)備沒(méi)被喚醒或者沒(méi)有收到指令,APNs 和設(shè)備之間由于推送不是那么及時(shí)所以會(huì)有一定的延時(shí)。
當(dāng)設(shè)備與Sever建立連接后,發(fā)送命令很快得到了響應(yīng)。但有時(shí)連續(xù)幾個(gè)操作后響應(yīng)會(huì)很慢,猜測(cè)可能設(shè)備本身還沒(méi)來(lái)得及處理,具體還的在研究
。
問(wèn)題4、想實(shí)現(xiàn)APP的靜默安裝
由于我們是企業(yè)應(yīng)用分發(fā),發(fā)布一個(gè)應(yīng)用希望所有受控的設(shè)備強(qiáng)制安裝即不需要彈框提示用戶點(diǎn)擊確認(rèn)操作。但是還沒(méi)有實(shí)現(xiàn),好像安卓的可以,關(guān)于iOS 的還在研究。
五、總結(jié)
以上為MDM的簡(jiǎn)單介紹和理解,如果你也熟悉MDM有不恰當(dāng)?shù)牡胤街x謝指導(dǎo),如果你不熟悉剛接觸希望能有一點(diǎn)幫助。接下來(lái)我會(huì)安裝以上所述操作步驟開(kāi)展下一步的工作。