首页 > 代码库 > 配置 MDM Provisioning Profile
配置 MDM Provisioning Profile
前提:已获得 APNS 证书。请参考《 MDM 证书申请流程 》一文。
环境:OSX 10.9.2,JDK 1.6,Eclipse JavaEE Helois,Tomcat 7.0
一、准备
1、首先你要有一个 APNS 证书,证书的获得请参考《 MDM 证书申请流程 》。
此步骤中需要注意的是 MDM Vendor 资格的获得。默认情况下,299美元的企业开发账号是没有 MDM Vendor 权限的,需要你向苹果申请(网站申请或者发邮件)。
2、还需要有一个 https 服务器。
此步骤中需要注意的是 SSL 证书的获得。在《开启 Tomcat https 服务》一文中,介绍了如何使用自签名的 SSL 证书在 tomcat 上部署 https 服务。
值得注意的是,在 Eclipse 中运行的 tomcat 服务器和单独使用 startup.sh 脚本启动的 tomcat 服务器采用的不是同一套配置文件。如果你为tomcat 配置了 https 服务,还需要在 eclipse 中再配一次,否则 Eclipse 中运行的 tomcat 不会启动 https 服务。其server.xml 在 eclipse 的 Servers 项目下面还有一个拷贝。
此外,笔者还想在 tomcat 上配置 APR,在windows下这很容易,但在 Mac 下不行。如果有人能配置成功,希望能告诉我是怎么做到的。
3、能够编写一点点 java 代码
本例的 MDM Server 是用 Java 实现的,需要写一点点简单的 Java 代码。但重点根本不在这里,MDM 实现的难点是证书及配置描述文件的配置,而不是代码。
二、MDM 配置描述文件
首先需要一个 MDM 配置描述文件,此文件用于安装到设备上,使其向 MDM 服务器注册为受管理的设备。
1、凭证
用 IPCU 新建一个配置描述文件,在“凭证”栏,创建新凭证。
1)点击“+”,将 CA 根证书添加到凭证中。
2)再次点击“+”,将私钥(.p12)添加到凭证中。
也就是说,在“凭证”中需要加入两个证书:根证书(自签名CA证书)和 MDM customer p12 证书(即 customer 在制作 certificate signingrequest 时生成的密钥对,将其从钥匙串中导出)。
根证书用于访问使用了自签名证书的 https 服务器(即后边配置的“服务器 URL”和“登记 URL”的https服务)。
而 p12 证书用于签名移动设备管理playload 。同时你要输入 p12 证书密码,否则安装配置描述文档时,中间会弹出一个对话框要你输入密码。
这些证书会在设备安装配置描述文件时自动安装到设备中。你可以利用这一点向设备安装多个根证书。例如:服务器 URL 中使用了一个https服务器,而登记 URL 中又使用了另一个不同的https服务器。这样设备在访问这些SSL 服务器时,不会要求下载客户端证书。
2、“移动设备管理”
“移动设备管理”页,需要配置如下项目:
1)服务器 URL:
填写你的 MDM 服务器地址,该 URL 用于与 iOS 设备通信,即发送 MDM 指令。
注意,该 URL 应为 https 地址。例如:https://192.168.2.1:8443/mdmtest/server。
2)登记 URL:
填写设备注册地址,该 URL 用于设备注册。可以与服务器URL不同。
注意,该 URL 应为 https 地址。例如:https://192.168.2.1:8443/mdmtest/checkin。
3)主题:
这个是 APNS 推送证书在钥匙串中的“用户 ID”字段复制粘贴过来的,如:
com.apple.mgmt.External.78d92bb8-ed86-4735-ba0c-e1154efed9a9
4)身份:
从下拉列表中选择一个有效的“凭证”。即前面我们在“凭证”添加的私钥。
5)访问权限
权限列表中包含“在设备中查询”、“添加/删除”、“安全性”等各项权限,你可以全部勾上,但是对于“使用开发 APNS 服务器”需要特别注意。这个是使用测试 APNS 服务器(gateway.sandbox.push.apple.com)推送。对于MDM,一般不要勾选此项, 我们使用 production 服务器。
3、SCEP
如果你准备使用 SCEP,可在此填写入 SCEP 服务器 URL 和示例名称。如果你不准备实现 SCEP,请保持此项为“尚未配置”,否则描述文件不能通过验证。
4、MDM Push 证书更新
描述文件是由 MDM customer 来制作的。作为 customer,MDM Push 证书、Profile 描述文件和 customerCSR 密钥对是绑定的。也就是说,当你重新请求 MDM Push 证书时,必须重新制作Profile描述文件。这样,服务器上的 MDM Push 证书和客户端的配置描述文件必须同步更新。否则,MDM服务器上的消息将无法推送到客户端。
三、测试配置描述文件
打开 eclipse,新建 web 项目 mdmtest。新建一个 Servlet:
@WebServlet("/checkin")
public class checkin extends HttpServlet {
private static final longserialVersionUID = 1L;
/**
* @seeHttpServlet#HttpServlet()
*/
public checkin(){
super();
// TODO Auto-generated constructor stub
}
public voiddoPut(HttpServletRequest req,
HttpServletResponse res)
throws ServletException,IOException
{
PrintWriter out = res.getWriter();
try
{
int i;
InputStream input;
input = req.getInputStream();
BufferedInputStream in =
new BufferedInputStream(input);
BufferedReader reader =
new BufferedReader(
new InputStreamReader(in));
while ((i = reader.read()) != -1)
{
System.out.printf("%c", i);
}
out.close();
in.close();
}
catch (IOException e) {}
}
}
运行 mdmtest,然后在设备安装 MDM 配置描述文件。此时 Eclipse 控制台将输出设备发给服务器的 Authenticate 和 TokenUpdate消息。
到此,我们的 MDM 研究工作已完成大半,接下来的就是实现一个简单的 MDM server。