1. 程式人生 > IOS開發 >iOS MDM詳解(1)— 初識和深入

iOS MDM詳解(1)— 初識和深入

關於MDM分為以下幾個步驟操作來介紹:

一、MDM介紹

MDM - Moblie Device Management 移動裝置管理,目的就是讓企業能夠方便的管理 iPhone、Pad等移動裝置。

當企業大量的使用移動裝置辦公或涉及到一些安全限制時裝置管理的作用就能明顯的體現出來,通過MDM IT人員門能夠在企業環境下安全地註冊裝置,無線配置和更新設定,監督公司政策的遵守情況,還能遠端擦除或鎖定被管理的裝置。例如(很多電子廠一線員工上班期間都不讓帶手機,害怕不法分子隨便拍照洩露產品資訊,如果此時引入MDM則可以再上班期間禁止員工的手機攝像頭的應用,其他也不影響手機使用)。

通過MDM能實現以下操作:

  • 安裝和刪除一個描述檔案
  • 安裝和刪除一個配置檔案
  • 獲取已安裝的描述檔案列表
  • 獲取已安裝的配置檔案列表
  • 獲取已安裝的證書列表
  • 獲取已安裝的第三方的應用列表
  • 應用的安裝與刪除
  • 獲取裝置資訊(UDID、Languages、DeviceID、BatteryLevel等)
  • 獲取安全相關的資訊
  • 裝置鎖屏、重啟、關機、清除密碼、資料擦除
  • 獲取已啟用的約束列表
  • 鎖住、定位已丟失的裝置
  • 裝置相關的設定管理、裝置名稱、桌布、行動網路等
  • 設定已安裝的應用屬性
  • 獲得可更新的系統的資訊
  • 安裝一個檔案或書籍

等等還有其他很多細微的功能沒有全部列出來。是不是感覺MDM的功能很多很強大,如果你以前沒有了解過它,肯定會很驚奇、沒有越獄的裝置居然還能夠這樣搞?O(∩_∩)O 是的,MDM就是這麼強大,所以在企業應用部署及裝置管理能發揮很大的作用。

雖然MDM的功能那麼多,我們在實際應用中也就是涉及到,鎖屏及密碼刪除、APP的安裝和刪除、配置檔案的安裝和刪除、獲取已安裝的APP列表及其他裝置相關的資訊,也就是說常用的操作也就那幾個。

二、關於

剛開始接觸MDM我也一臉的懵逼,不知道該從何著手。看著網上零零散散的資料,問題涉及到的也是支離破碎,真不到他們是否具體操作過?有沒有實際跑通?反正各大論壇的也都是轉來轉去,可能有的人理解了,做出來了,但是寫的也是一概而過,真正的按照步驟操作時也是一團漿糊。沒辦法,我只能硬著頭皮去看官方資料,因為其他有用的資料帶來的資訊太少了。

經過幾個月的學習和了解、對MDM認知也慢慢的清晰了好多。至此我們的管理平臺也跑通了,正打算部署到企業內部使用。所以我想好好的總結一下,把做過的,想過的,遇到的問題一步一步的記錄下來,或許能夠幫助你更好的理解MDM、快速的使用MDM。

三、MDM工作流程

引用官網提供的一張圖:

MDM工作流程

從上圖可以看出要實現MDM服務須涉及到,蘋果推送伺服器APNs、自己的或者第三方提供的MDM伺服器、受管理的裝置。實際中三者之間通過HTTPS相互通訊,所以推送和普通APP推送一樣必須要有推送證書。沒有操作的情況下,除了裝置本身和APNs之間保持連線,其他都不在連線狀態。各自在系統中的作用如下:

  • MDM伺服器:對於裝置,通過它傳送指令對裝置進行管理,獲取相關資訊及操作,迴應響應裝置操作。對於APNs,向APNs傳送一個命令,目的來喚醒裝置去主動連線MDM伺服器,報告其當前狀態是否處於空閒(若裝置空閒,MDM伺服器會繼續下一步操作比如開始傳送指令)。

  • APNs:可看作其他兩者之間的信使,主要就是轉發MDM伺服器指令給裝置,意思告訴裝置開始去連線伺服器啦。

  • 裝置:首先通過Safari訪問伺服器安裝一個配置描述檔案(下文敘述)並登記註冊使其成為受管理的裝置,當收到APNs指令後,根據已安裝的配置檔案的url 連線MDM伺服器並報告其狀態,然後接受下一步命令比如命令DeviceInformation(查詢裝置資訊如ModelName、BatteryLevel、WiFiMAC等),裝置收到XML格式的指令後再向伺服器傳送其相關查詢的資訊,如果不需要繼續傳送指令,伺服器關閉連線。

另外裝置和MDM伺服器之間資料傳輸都是以XML格式形式,以PUT請求的方式進行的,所以傳送指令時,伺服器要把指令封裝成一個XML的檔案同時要實現PUT請求相關操作處理。APNs所傳送的僅僅是一個與裝置本身相關的標示符,沒有其他命令,目的就是喚醒裝置去連線MDM伺服器。

四、要做的操作及我遇到過的問題

通過以上了解可看出,要實現一個完整的MDM服務,我們需要:製作APNs推送證書、裝置安裝的配置檔案、實現https通訊、實現MDM相關協議、學習MDM協議相關命令及使用、一個MDM伺服器(這裡不作主要敘述,因為這些相關的都是有我們後臺做的)。所以接下來的時間我打算依次做以下任務。

以上即為MDM服務中幾個關鍵的操作,其他的一些細微的方面的操作以後在慢慢整理。

正常情況下操作我遇到了以下幾個問題:

問題1、 mobileconfig配置檔案安裝失敗

裝置在安裝過程中,一直提示安裝失敗!當我想使用抓包工具Charles檢視時居然安裝成功了,關閉軟體再次安裝還是失敗,猜測可能由於Charles代理的作用能連線到還處於內網的MDM Server,若直接釋出到外網應該能避免這個問題(目前還沒有驗證?)。

問題2、MDM伺服器與APNs無法建立連線,造成一直推送不成功

推送命令時Java後臺一直報錯,javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 後來升級了SKD錯誤解除。

隨之又出現錯誤 Software caused connection abort: recv failed 後經排查原來連線的是開發環境的地址,mobileconfig配置中有這個配置選項預設是生成環境,通過identity.apple.com/pushcert申請的推送證書只能是生成環境的證書,這一點我當時還傻傻的以為生成和推送都一樣呢?。

問題3、命令推送成功後設備沒有響應操作或者很慢

命令推送成功了有時沒響應,多數都是在MDM Server 與 APNs之間,估計裝置沒被喚醒或者沒有收到指令,APNs 和裝置之間由於推送不是那麼及時所以會有一定的延時。

當裝置與Sever建立連線後,傳送命令很快得到了響應。但有時連續幾個操作後響應會很慢,猜測可能裝置本身還沒來得及處理,具體還的在研究

問題4、想實現APP的靜默安裝

由於我們是企業應用分發,釋出一個應用希望所有受控的裝置強制安裝即不需要彈框提示使用者點選確認操作。但是還沒有實現,好像安卓的可以,關於iOS 的還在研究。

###五、總結

以上為MDM的簡單介紹和理解,如果你也熟悉MDM有不恰當的地方謝謝指導,如果你不熟悉剛接觸希望能有一點幫助。接下來我會安裝以上所述操作步驟開展下一步的工作。