iosmdm开发,dmmd ios
iOS MDM详解(3)— 生成mobileconfig配置文件及签名
比如:
创新新互联,凭借十载的网站建设、成都网站建设经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上千多家案例。做网站建设,选创新互联公司。
制作一个配置文件可以 iPhone配置使用工具 和 手写XML文件 两种方式。为了方便操作我用了前者(网上说这个已被苹果抛弃,好像不影响文件生成)。
打开文件——新建配置文件,主要涉及使用到的配置如下:
至此配置设置基本完成,保存、导出会提示给配置文件签名,选择无即可。
我们可以直接修改此XML文件,据此 Configuration Profile Reference 可添加其他所需的字段。你也可以在此基础上修改适合为自己的(估计很容易遗漏或出错),我还是喜欢在 iPhone配置使用工具 中操作比较方便。
以上生成的配置文件其实可以直接安装到设备上,如果安装成功后会有一个红色的提示‘未签名’如下。
签名要经历两个操作,一、MDM Sever端签名。二、用苹果颁发的证书签名。
需要以下证书文件:
可以再终端中执行: openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer server.crt -inkey server.key -certfile cert-chain.crt -outform der -nodetach
(以上是Java后台签名的操作过程,我没有验证,在此作为一个操作步骤总结放在这里)。
我猜测MDM Sever的签名只是为了和客户端进行下认证和对描述文件的加密过程,只是让这两个之间相互认知对方,和iOS系统是否承认无关。所以以上操作之后还会提示‘未签名’。(实际测试中这个操作可以省略)。
以下操作引自网络
这个操作有几种方法可供选择,这里我使用了脚本签名。
借助于强大的github,找到了一个 python脚本 进行签名
1.签名一个mobileconfig
profile_signer.py与 mobileconfig 放在同一目录,终端进入目录执行
./profile_signer.py -n "3rd Party Mac Developer Application" sign AcrobatPro.mobileconfig AcrobatProSigned.mobileconfig
2.加密一个mobileconfig
./profile_signer.py -n "3rd Party Mac Developer Application" encrypt AcrobatPro.mobileconfig AcrobatProEnc.mobileconfig
3.签名并且加密一个mobileconfig
./profile_signer.py -n "3rd Party Mac Developer Application" both AcrobatPro.mobileconfig AcrobatProBoth.mobileconfig
"3rd Party Mac Developer Application"为你的证书在钥匙串中的全名,选择证书=显示简介=复制常用名称加上引号即可,比如
"iPhone Developer: jakey.shao xxxx@xxx.com "
"iPhone Distribution: Skyfox Network Technology Co., Ltd."
66911171-EE9C-4DB7-BFCE-6564CC1B4E1A如果能正确读取到证书,会提示允许访问钥匙串,点击允许即可!
最终安装提示已验证啦。
ios mdm api 开放吗
MDM的全称是Mobile Device Management,顾名思义是移动设备管理,帮助企业将IT管理能力从传统的 PC 延伸到移动设备甚至移动应用APP 。
不是免费开放的,需要一个企业级开发者账户($299),并且开通了mdm功能(需要提交苹果申请才能开通此功能)
iOS MDM设备底层工作原理
步骤1: MDM服务器发送一个MDM推送信息,告诉设备服务器需要你执行的命令了。
步骤2: 苹果推送通知给iOS设备
步骤3: 当设备空闲和有网络时,去连接MDM服务器并告诉服务器其状态
步骤4: MDM服务器根据设备状态返回给设备需要执行的命令
步骤5: 设备执行了命令,并将执行的结果给MDM服务器
从上面日志我们可以看到上面的apsd进程,apsd是一个长链接进程,每当MDM服务器推送MDM指令,此进程就会工作处理VPNS消息。
其中的(426590595)这个id,当MDM执行的时候会取这个id的任务。
表明当前有MDM任务再执行,新来的MDM任务需要等待当前MDM任务执行完成才能执行,所有新来的MDM任务按照先后顺序依次执行。并且新来的任务apsd也都是先接收到进行APSMessageStore。
个人使用总结,若有疑问随时私信我沟通。
iOS MDM详解(1)— 初识和深入
MDM - Moblie Device Management 移动设备管理,目的就是让企业能够方便的管理 iPhone、Pad等移动设备。
通过MDM能实现以下操作:
等等还有其他很多细微的功能没有全部列出来。是不是感觉MDM的功能很多很强大,如果你以前没有了解过它,肯定会很惊奇、没有越狱的设备居然还能够这样搞?O(∩_∩)O 是的,MDM就是这么强大,所以在企业应用部署及设备管理能发挥很大的作用。
虽然MDM的功能那么多,我们在实际应用中也就是涉及到,锁屏及密码删除、APP的安装和删除、配置文件的安装和删除、获取已安装的APP列表及其他设备相关的信息,也就是说常用的操作也就那几个。
刚开始接触MDM我也一脸的懵逼,不知道该从何着手。看着网上零零散散的资料,问题涉及到的也是支离破碎,真不到他们是否具体操作过?有没有实际跑通?反正各大论坛的也都是转来转去,可能有的人理解了,做出来了,但是写的也是一概而过,真正的按照步骤操作时也是一团浆糊。没办法,我只能硬着头皮去看官方资料,因为其他有用的资料带来的信息太少了。
经过几个月的学习和了解、对MDM认知也慢慢的清晰了好多。至此我们的管理平台也跑通了,正打算部署到企业内部使用。所以我想好好的总结一下,把做过的,想过的,遇到的问题一步一步的记录下来,或许能够帮助你更好的理解MDM、快速的使用MDM。
引用官网提供的一张图:
从上图可以看出要实现MDM服务须涉及到,苹果推送服务器APNs、自己的或者第三方提供的MDM服务器、受管理的设备。实际中三者之间通过HTTPS相互通信,所以推送和普通APP推送一样必须要有推送证书。没有操作的情况下,除了设备本身和APNs之间保持连接,其他都不在连接状态。各自在系统中的作用如下:
另外设备和MDM服务器之间数据传输都是以XML格式形式,以PUT请求的方式进行的,所以发送指令时,服务器要把指令封装成一个XML的文件同时要实现PUT请求相关操作处理。APNs所发送的仅仅是一个与设备本身相关的标示符,没有其他命令,目的就是唤醒设备去连接MDM服务器。
通过以上了解可看出,要实现一个完整的MDM服务,我们需要:制作APNs推送证书、设备安装的配置文件、实现https通信、实现MDM相关协议、学习MDM协议相关命令及使用、一个MDM服务器(这里不作主要叙述,因为这些相关的都是有我们后台做的)。所以接下来的时间我打算依次做以下任务。
以上即为MDM服务中几个关键的操作,其他的一些细微的方面的操作以后在慢慢整理。
正常情况下操作我遇到了以下几个问题:
随之又出现错误 Software caused connection abort: recv failed 后经排查原来连接的是开发环境的地址,mobileconfig配置中有这个配置选项默认是生成环境,通过 identity.apple.com/pushcert 申请的推送证书只能是生成环境的证书,这一点我当时还傻傻的以为生成和推送都一样呢????。
命令推送成功了有时没响应,多数都是在MDM Server 与 APNs之间,估计设备没被唤醒或者没有收到指令,APNs 和设备之间由于推送不是那么及时所以会有一定的延时。
当设备与Sever建立连接后,发送命令很快得到了响应。但有时连续几个操作后响应会很慢, 猜测可能设备本身还没来得及处理,具体还的在研究 。
由于我们是企业应用分发,发布一个应用希望所有受控的设备强制安装即不需要弹框提示用户点击确认操作。但是还没有实现,好像安卓的可以,关于iOS 的还在研究。
以上为MDM的简单介绍和理解,如果你也熟悉MDM有不恰当的地方谢谢指导,如果你不熟悉刚接触希望能有一点帮助。接下来我会安装以上所述操作步骤开展下一步的工作。
iOS 如何实现移动设备管理(MDM)
移动设备管理(MDM)即Mobile Device Managment,是为了方便企业能够远程管理iPad、iPhone等移动设备。
MDM工作流程如下:
设备需要安装一个config文件,描述文件中定义了server可以对设备有哪些管控权限。服务端通过APNS推送MDM命令来实现对设备的管理。
可以看到MDM提供的功能是很多的,并且权限很高,能几乎管控一个设备的使用。
初试企业证书并不具备MDM功能,需要申请开通成为Vendor。
完整的证书列表如下:
流程如下:
大多情况下只辉出现Acknowledge和Idle两种状态
命令必须包含Command和CommandUUID,例如如下:
分享标题:iosmdm开发,dmmd ios
文章分享:http://ybzwz.com/article/dsdjgdh.html