本文是对Light413大神的MDM系列文章,步骤三《iOS MDM详解(3)— 生成mobileconfig配置文件及签名》的补充。
大神使用的是IPCU(iPhone Configuration Utility),此工具现在已被Apple Configurator 2代替,且最新的mac系统已不能安装。
大神的文章链接:
iOS MDM详解(3)— 生成mobileconfig配置文件及签名
iOS MDM详解(4)— 安装mobileconfig配置文件
1. 描述文件介绍:
配置描述文件是一个用于安装到设备的XML格式的文件,包含了相关的配置信息。
比如:
- 设备安全性策略和访问限制
- VPN 配置信息
- Wi-Fi 设置
- 密码策略设置
- 移动设备管理
- 移动设备管理
2. 下载软件和官方文档。
2.1. 在App Store中搜索Apple Configurator 2并下载。
2.2. 下载官方文档。
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代理、内容过滤器等等,可以通过修改描述文件添加,也可以通过服务器下发指令来安装新的描述文件。