使用Apple Configurator 2配置MDM描述文件

4,579 阅读8分钟

本文是对Light413大神的MDM系列文章,步骤三《iOS MDM详解(3)— 生成mobileconfig配置文件及签名》的补充。

大神使用的是IPCU(iPhone Configuration Utility),此工具现在已被Apple Configurator 2代替,且最新的mac系统已不能安装。

大神的文章链接:

iOS MDM详解(1)— 初识和深入

iOS MDM详解(2)— 证书的制作

iOS MDM详解(3)— 生成mobileconfig配置文件及签名

iOS MDM详解(4)— 安装mobileconfig配置文件

iOS MDM详解(5)— 给设备发个指令操作

1. 描述文件介绍:

配置描述文件是一个用于安装到设备的XML格式的文件,包含了相关的配置信息。

比如:

  • 设备安全性策略和访问限制
  • VPN 配置信息
  • Wi-Fi 设置
  • 密码策略设置
  • 移动设备管理
  • 移动设备管理

2. 下载软件和官方文档。

2.1. 在App Store中搜索Apple Configurator 2并下载。

2.2. 下载官方文档。

MDM-Protocol-Reference

Configuration-Profile-Reference

3. 创建描述文件。

3.1. 新建描述文件。

3.2. 填写通用信息。

3.3. 配置证书。

添加https的证书,p12格式。要是买来的证书,不能是自签证书(现在都有免费的https证书)。

3.4. 配置MDM有效载荷信息:在Apple Configurator 2 是没有这个配置项的,需要自己编辑文件,通过官方文档(MDM-Protocol-Reference)配置:(后面会给一个MDM有效载荷模板,请自行修改使用)。

  • IdentityCertificateUUID:设备身份证书,也就是前面添加的https证书的PayloadUUID。

  • Topic:主题用于监听推送通知,服务器的推送证书必须有相同的主题,主题必须以com.apple.mgmt.开头。钥匙串中APSP的用户id信息就是主题,后面有图片介绍。

  • ServerURL:设备注册以后,每次连接的地址。必须以https开头(https://服务器地址),可以带端口号(:1234)

  • CheckInURL:可选。首次设备注册的地址,包括认证和更新token操作。不提供就使用ServerURL。必须以https开头(https://服务器地址),可以带端口号(:1234)

  • CheckOutWhenRemoved:可选。当为true,当用户删除设备上的配置文件时设备会向登记URL发送个消息表示配置文件要删除了,MDM Serve可以依此来检测设备是否还在监控中。默认false。

  • AccessRights:访问权利。比如请求锁屏,移除锁屏密码,恢复出厂设置等等权利。

  • UseDevelopmentAPNS:是否使用开发环境APNS。如果你是从Apple Push Certificate Portal (identity.apple.com/pushcert)下载的,请选择false。

  • PayloadType:com.apple.mdm。

  • PayloadVersion:1。

保存描述文件,并用Xcode打开,添加MDM有效载荷模板。

修改模板信息。

1> 修改Topic值。

Topic的值为钥匙串中APSP的用户id信息。

2> 修改CheckInURL(注册地址)和ServerURL(服务器地址),值由后端提供,必须以https开头。

3> 修改IdentityCertificateUUID值,这个字段的值是先前添加的https证书的PayloadUUID。

比如:

4. 签名。

已签名的描述文件无法编辑,要编辑请取消签名。

未签名的描述文件安装到手机上,在签名者那一栏,会有红色“未签名”文字。

比如:

已签名的例子:

4.1. 使用Apple Configurator 2签名。

4.2. 服务端使用ssl签名。

需要以下证书文件:

unsigned.mobileconfig 原始的未签过名的配置文件

server.crt 服务器端用于签名的证书

server.key 服务器端用于签名的证书的秘钥

cert-chain.crt 其他机构为服务器颁发的CA证书

signed.mobileconfig will be your signed configuration profile

可以再终端中执行:openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer server.crt -inkey server.key -certfile cert-chain.crt -outform der -nodetach

(以上是Java后台签名的操作过程,我没有验证,在此作为一个操作步骤总结放在这里)。

5. 安装描述文件。

5.1. 使用Apple Configurator 2来安装。

手机连接mac,选择设备,并双击。

5.2. 描述文件放到服务器,用户使用浏览器下载和安装。

5.3. 使用隔空投送安装(airdrop)。

6. 调试。

7. 常见问题。

7.1. 如果描述文件安装到手机,手机弹框说描述文件安装失败,请看控制台日志的信息,了解具体的问题。

7.2. 控制台日志说https证书无效。US Desc: The server certificate for xxxx is invalid.

可能原因一:你未将IdentityCertificateUUID更改为对应的值;比如你在后面又更换了https证书,或者重新添加https证书,那么证书的PayloadUUID就变了。

解决方法:请将IdentityCertificateUUID更改为你添加的https证书的PayloadUUID。

可能原因二:使用https证书的是自签证书,请使用买来的证书(现在有免费的)。

7.3. 如何识别是哪个用户。

在CheckInURl和ServerURL地址后面,添加参数。

https://服务器地址?deviceId=330754895210610688

8. 模板:

8.1. 关于MDM有效载荷的模板:

<dict>
			<key>AccessRights</key>
			<integer>8191</integer>
			<key>CheckInURL</key>
			<string>https://服务器地址/rjmgrtt/iosmdm/checkin?deviceId=330754895210610688</string>
			<key>CheckOutWhenRemoved</key>
			<true/>
			<key>IdentityCertificateUUID</key>
			<string>83D87EB6-39FF-4D92-B940-3E6B4E8A1859</string>
			<key>PayloadDescription</key>
			<string>配置“移动设备管理”</string>
			<key>PayloadDisplayName</key>
			<string>移动设备管理</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.mdm.02D2C93A-3F6D-4E54-B15D-EECC1B7BD583</string>
			<key>PayloadOrganization</key>
			<string>Gener-Tech</string>
			<key>PayloadType</key>
			<string>com.apple.mdm</string>
			<key>PayloadUUID</key>
			<string>02D2C93A-3F6D-4E54-B15D-EECC1B7BD583</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>ServerURL</key>
			<string>https://服务器地址/rjmgrtt/iosmdm/server?deviceId=330754895210610688</string>
			<key>SignMessage</key>
			<true/>
			<key>Topic</key>
			<string>com.apple.mgmt.External.xxxxxxx</string>
			<key>UseDevelopmentAPNS</key>
			<false/>
		</dict>

8.2. 全部的描述文件模板。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ConsentText</key>
	<dict>
		<key>default</key>
		<string>请同意哦</string>
	</dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>AccessRights</key>
			<integer>8191</integer>
			<key>CheckInURL</key>
			<string>https://服务器地址/rjmgrtt/iosmdm/checkin?deviceId=330754895210610688</string>
			<key>CheckOutWhenRemoved</key>
			<true/>
			<key>IdentityCertificateUUID</key>
			<string>83D87EB6-39FF-4D92-B940-3E6B4E8A1859</string>
			<key>PayloadDescription</key>
			<string>配置“移动设备管理”</string>
			<key>PayloadDisplayName</key>
			<string>移动设备管理</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.mdm.02D2C93A-3F6D-4E54-B15D-EECC1B7BD583</string>
			<key>PayloadOrganization</key>
			<string>Gener-Tech</string>
			<key>PayloadType</key>
			<string>com.apple.mdm</string>
			<key>PayloadUUID</key>
			<string>02D2C93A-3F6D-4E54-B15D-EECC1B7BD583</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>ServerURL</key>
			<string>https://服务器地址/rjmgrtt/iosmdm/server?deviceId=330754895210610688</string>
			<key>SignMessage</key>
			<true/>
			<key>Topic</key>
			<string>com.apple.mgmt.External.xxxxxxx</string>
			<key>UseDevelopmentAPNS</key>
			<false/>
		</dict>
		<dict>
			<key>Password</key>
			<string>k49AXS3j</string>
			<key>PayloadCertificateFileName</key>
			<string>new.p12</string>
			<key>PayloadContent</key>
			<data>
			证书数据
			</data>
			<key>PayloadDescription</key>
			<string>添加 PKCS#12 格式的证书</string>
			<key>PayloadDisplayName</key>
			<string>new.p12</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.security.pkcs12.83D87EB6-39FF-4D92-B940-3E6B4E8A1859</string>
			<key>PayloadType</key>
			<string>com.apple.security.pkcs12</string>
			<key>PayloadUUID</key>
			<string>83D87EB6-39FF-4D92-B940-3E6B4E8A1859</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
		</dict>
	</array>
	<key>PayloadDescription</key>
	<string>用于管理设备</string>
	<key>PayloadDisplayName</key>
	<string>firstTest</string>
	<key>PayloadIdentifier</key>
	<string>TouchWorlddeMacBook-Pro.157A5E97-7AD2-4AEB-AC54-08739853F764</string>
	<key>PayloadOrganization</key>
	<string>rjsoft</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>537C28F0-A71D-4A55-9E4F-E2ADA205A5A2</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

9.其他设置。

在上面配置完成,并安装描述文件成功后,说明基本功能已经通了。如果要添加一些其他配置,比如访问限制、DNS代理、内容过滤器等等,可以通过修改描述文件添加,也可以通过服务器下发指令来安装新的描述文件。