iOS MDM详解(1)— 初识和深入
关于MDM分为以下几个步骤操作来介绍:
- iOS MDM详解(1)— 初识和深入
- iOS MDM详解(2)— 证书的制作
- iOS MDM详解(3)— 生成mobileconfig配置文件
- iOS MDM详解(4)— 安装mobileconfig配置文件
- iOS MDM详解(5)— 给设备发个指令操作
一、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服务器(这里不作主要叙述,因为这些相关的都是有我们后台做的)。所以接下来的时间我打算依次做以下任务。
- iOS MDM详解(1)— 初识和深入
- iOS MDM详解(2)— 证书的制作
- iOS MDM详解(3)— 生成mobileconfig配置文件
- iOS MDM详解(4)— 安装mobileconfig配置文件
- iOS MDM详解(5)— 给设备发个指令操作
以上即为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有不恰当的地方谢谢指导,如果你不熟悉刚接触希望能有一点帮助。接下来我会安装以上所述操作步骤开展下一步的工作。