苹果怎么开启设备管理,最新苹果系统的设备管理在哪里

首页 > 数码 > 作者:YD1662022-12-27 06:37:10

1. 证书申请

成为一个 MDM Vendor

访问 https://developer.apple.com/contact/submit.php,在这里你可以申请成为一个 MDMVendor;

创建证书申请

打开钥匙串,点击“钥匙串访问->证书助理->从证书颁发机构请求证书”,创建一个 CSR。将此 CSR 存储至磁盘(vendor.csr)。记住“Vendor”字段应该是私钥的名字,创建CRS 时会同时创建一个私钥,这个私钥名字(Vendor)会显示在钥匙串中。

导出私钥

在钥匙串中选择创建 CSR 时的私钥,导出为vendor.p12文件。导出时会要求你设置私钥密码。请记住这个密码。

openssl pkcs12 -in vendor.p12 -nocerts -out vendor.key

会要求你输入3次密码:vendor.p12 的密码、vendor.key 的密码、vendor.key 的密码。

提交 CSR登录 Portal(https://developer.apple.com/)

进入 Certificates->All,点击 Add Certificate(“ ”按钮),选择Production 下的“MDM CSR”。

苹果怎么开启设备管理,最新苹果系统的设备管理在哪里(1)

点 Continue->Continue,上传第二步中创建的 CSR,然后点 Generate。

点击 Download,将得到一个 mdm.cer

重新创建一个CSR

打开钥匙串,点击“钥匙串访问->证书助理->从证书颁发机构请求证书”,创建一个 CSR,记住密钥对常用名称(MDMCustomer),导出 CSR。文件名: MDMCustomer.csr和MDMCustomer.p12(设置密码)

python mdm_vendor_sign.py --csr MDMCustomer.csr --key 'vendor.key' --mdm mdm.cer

(mdm_vendor_sign.py : https://github.com/grinich/mdmvendorsign

执行结果将生成一个 plist_encoded 文件。

上传 plist_encoded

用你的 Apple ID 登录 https://identity.apple.com/pushcert/ ,点击“Create aCertificate”,上传 plist_encoded文件。上传后会产生一个 APNS 证书,下载后得到一个 .pem 文件(为方便使用,改名push_cert.pem)。双击 .pem 文件将证书安装到钥匙串中。打开钥匙串,看看到该证书

为“APSP:”,如下图所示:

苹果怎么开启设备管理,最新苹果系统的设备管理在哪里(2)

右键导出“mdm_push.p12”,导出时需要设置密码,p12和密码为推送apns服务器时使用

2. https服务器

mdm服务器必须是一个https服务器,首先要有ssl签名证书

cloud.com_bundle.crt

cloud.com.key

双击crt文件加入钥匙串,然后再导出root.p12证书,设置密码;

3. 制作描述文件

下载安装iPhoneConfigUtility.dmg,iPhone 配置实用工具(http://221.229.167.24/file3.data.weipan.cn/2981255/006aa9846f79793b34b7419affe442e1a8e8fb0d?ip=1437039985,116.231.112.113&ssig=HDdX8Flq3y&Expires=1437041755&KID=sae,l30zoo1wmz&fn=iPhoneConfigUtility.dmg&skiprd=2&se_ip_debug=116.231.112.113&corp=2&from=1221134&wsiphost=local)

苹果怎么开启设备管理,最新苹果系统的设备管理在哪里(3)

描述文件基本信息填写

苹果怎么开启设备管理,最新苹果系统的设备管理在哪里(4)

凭证里面添加https的三个证书

cloud.com_bundle.crt

root.p12(预先填好密码)

MDMCustomer.p12(预先填好密码)

苹果怎么开启设备管理,最新苹果系统的设备管理在哪里(5)

服务器URL和登记URL分别是mdm服务器的两个url(server,checkin)

主题是apns证书中的用户ID

苹果怎么开启设备管理,最新苹果系统的设备管理在哪里(6)

身份选择MDMCustomer.p12

填写完成后导出为mdm.mobileconfig,放到mdm服务器中

4. 描述文件签名

openssl x509 -inform DER -outform PEM -in AppleAAICA.cer -out Intermediate.crt.pem openssl rsa -in cloud.com.key -out cloud.comnopass.key openssl smime -sign -in mdm.mobileconfig -out signedmdm.mobileconfig -signer cloud.com_bundle.crt -inkey cloud.comnopass.key -certfile Intermediate.crt.pem -outform der -nodetach

5. MDM服务器

创建两个Servlet分别为checkin和server

5.1. 手机访问mdm.mobileconfig文件url,会自动弹出安装描述文件窗口,点击安装

5.2. checkin收到第一个验证包

<?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>MessageType</key> <string>Authenticate</string> <key>Topic</key> <string>com.apple.mgmt.External.c07c9eec-07a2-460a-b972-36ee1068538b</string> <key>UDID</key> <string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string> </dict> </plist>

服务可以根据topic和udid验证当前设备是否允许安装描述文件;

返回空plist文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> </dict> </plist>

5.3. checkin收到第二个更新包(更新包会发两次,以最后一个为准)

<?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>MessageType</key> <string>TokenUpdate</string> <key>PushMagic</key> <string>2E8EF54B-A3B8-4BB8-ACEC-EFF4FFD043FB</string> <key>Token</key> <data> u9Qw5N5UUbc 5OD9lN0UvUpGvIMh3TyQQF2eUMwxDUQ= </data> <key>Topic</key> <string>com.apple.mgmt.External.c07c9eec-07a2-460a-b972-36ee1068538b</string> <key>UDID</key> <string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string> <key>UnlockToken</key> <data> REFUQQAABORWRVJTAAAABAAAAARUWVBFAAAABAAAAAJVVUlEAAAAEEMrLLiJok0Wnfyu 4klmq6dITUNLAAAAKNxRe6wxFKcbmNEw4S7Ct018wzSWe2Ipzxi5IZn5eo7xGTKXTBzM ucJXUkFQAAAABAAAAAFTQUxUAAAAFPtkVb3G7PT4x9OZEuNU9wTha149SVRFUgAAAAQA AMNQVVVJRAAAABAfgjk6tnRMYKIXTVZT06UiQ0xBUwAAAAQAAAABV1JBUAAAAAQAAAAD S1RZUAAAAAQAAAAAV1BLWQAAACj93rqgfppn1uZxWl7kZcFv1Is6UPI2Yk7D tHkXGXf UboM8dv 8C/WVVVJRAAAABAtvP11wHFJ9IOtjHme0wYdQ0xBUwAAAAQAAAACV1JBUAAA AAQAAAADS1RZUAAAAAQAAAABV1BLWQAAACgrJcL3j9LbJqi s6kZnPQH5d g8rHKbtuh xcx7pAejtsZ7xFuScdYBUEJLWQAAACCbeA00Z3VAojbWpfc52aE8gSIdvIyWToMDCv17 tQp7d1VVSUQAAAAQfCzGf7SkTtmoQc/WarqpP0NMQVMAAAAEAAAAA1dSQVAAAAAEAAAA A0tUWVAAAAAEAAAAAFdQS1kAAAAoXd NxjkpOwer4uyQzA6wZdYm4/ctf8SfsspfxGXw qifVis3ImbMoA1VVSUQAAAAQKpmkOKBcSo 4TaqtdnGWcUNMQVMAAAAEAAAABVdSQVAA AAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAo1hDNfm3drLR KOhVsbkcB5IIqYs4e5a2 YeFt1o34SXGU1Ywu1mR1nlVVSUQAAAAQEOIKsC4kQ8 OuQR92Ps1fkNMQVMAAAAEAAAA BldSQVAAAAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAoBjaVvl86lvOprH6/Vr FQPOY sXHD9eMigny BE gHmMc/yR0h czPVVVSUQAAAAQS7txzVVrTSCA1aHzgXo280NMQVMA AAAEAAAAB1dSQVAAAAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAoVSKYdMuUE2sFP5s5 LSJCmfwMXp i9T1C0CPgVd9se1eji XpIjmKWFVVSUQAAAAQoeU1R4wfSTGi6RRUaDT7 t0NMQVMAAAAEAAAACFdSQVAAAAAEAAAAAUtUWVAAAAAEAAAAAFdQS1kAAAAgpKQZgWZJ LfcfxkE8aWSnrodd9Uev5rw6s5GM8OSF7adVVUlEAAAAEMb92KQdw0p6m5DnIzsgogpD TEFTAAAABAAAAAlXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKKd5dM6Gh yM 1PIiu6cOWb3VQ2QQydbRpgAKbdbewZKPgX1TFPy5cxFVVUlEAAAAEDyP8gnJ60Suo1nQ PlRu/V9DTEFTAAAABAAAAApXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKMK/ AHmOcWUVYAurqv RTdV4Kub6HfqLH/VajJ/oHIKVZbtfJMYiKR5VVUlEAAAAEIR161V3 Sksoic XGHgURLhDTEFTAAAABAAAAAtXUkFQAAAABAAAAAFLVFlQAAAABAAAAABXUEtZ AAAAIKvGDlUGGqFGRReQc33eb7OvhR5l6aCqi3wUIxnmaJSlU0lHTgAAABRZRuDuoEDK c/ 1HogT1oZSezxH9w== </data> </dict> </plist>

获取如下信息需要保存

PushMagic:推送时使用每次安装描述文件都会变化

Token:推送时使用标示推送到得设备重新安装描述文件不会变化

Topic:描述文件唯一标示

UDID:设备唯一标示

UnlockToken:在清除密码时需要额外提供的安全信息

5.4. 推送命令

try { ApnsService service = APNS.newService() .withCert("mdm_push.p12","123456") //.withSandboxDestination()// 调试模式 .withProductionDestination() // 产品模式(调试和产品模式只能使用一种) .build(); String mdmPayload = APNS.newPayload().customField("mdm", PushMagic).build(); String Token = parseToken(Token); service.push(Token, mdmPayload); System.out.println("推送锁屏信息已发送!"); } catch (Exception e) { System.out.println("出错了:" e.getMessage()); pushState = 0; }

5.5. server获得设备请求命令

发出推送命令后,apns服务器通知设备去MDM取命令;

收到设备的消息为:

<?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>Status</key> <string>Idle</string> <key>UDID</key> <string> [ redacted ] </string> </dict> </plist>

服务器返回命令为

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Command</key> <dict> <key>RequestType</key> <string>DeviceLock</string> </dict> <key>CommandUUID</key> <string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string> </dict> </plist>

6. 卸载描述文件

卸载描述文件分两种情况:

6.1. 设备在线

会发送一个checkin消息

<?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>MessageType</key> <string>CheckOut</string> <key>Topic</key> <string>com.apple.mgmt.External.c07c9eec-07a2-460a-b972-36ee1068538b</string> <key>UDID</key> <string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string> </dict> </plist>

6.2. 设备离线

在确定设备在线的情况下,发送查询命令,如果逾期没收到返回信息标示设备描述文件被卸载;

7. 设备命令

7.1. Control Commands(控制类命令)

7.1.1. Device Lock(设备锁屏)

RequestType: DeviceLock

设备锁屏后,如果设备以前设置了锁屏密码,那么设备就会要求输入你以前的锁屏密码来解除屏幕锁。

7.1.2. Erase Device(擦出设备数据)

RequestType: EraseDevice

擦拭设备的内存数据和重置为“恢复出厂”的状态,需要连接到iTunes备份或恢复配置新的。

7.1.3. Clear Passcode(清除锁屏密码)

RequestType: ClearPasscode

另外需要TokenUpdate时返回的UnlockToken数据;

如果设备以前设置了锁屏密码,当发送此命令时会清除设备设置的密码。如果密码被其他配置控制需要,用户将可以在宽限期内设置一个新密码。

7.2. Device Queries(查询设备信息类)

7.2.1. Security Information(安全信息)

RequestType: SecurityInfo

列出指定的安全相关的设置装置,包括硬件加密功能,以及是否存在一个密码(如果是这样,是否符合配置)。如果密码是存在的,装置必须解锁执行这个命令。

7.2.2. Installed Application List(应用程序列表)

RequestType: InstalledApplicationList

所有的应用程序目前安装在设备列表。包括应用程序所使用的总体持久性存储,表示字节,随着应用程序的名称,版本,和束标识符。没有列出应用程序安装通过破解方法。

7.2.3. Device Information(设备信息)

RequestType: DeviceInformation

检索指定的一般信息的装置,包括MAC的电话号码,软件版本,名称和编号等。

7.2.4. Certificate list(证书列表)

RequestType: CertificateList

列出所有目前在设备上安装证书。

7.2.5. Profile List(描述文件列表)

RequestType: ProfileList

安装在设备描述文件列表。包括普通的名字,是否删除密码是必需的,是否去除无效,唯一的标识符,和其他类似的信息。

7.2.6. Provisioning Profile List(预装的描述文件列表)

RequestType: ProvisioningProfileList

预装在设备列表描述文件(类似于描述文件列表)。

7.2.7. Restrictions List(限制列表)

RequestType: RestrictionsList

列出目前在设备上的限制的影响。例如,列表禁用应用程序,无论是备份加密是被迫的,等等。

7.3. Device Configuration(设备配置)

7.3.1. Install Profile(安装描述文件)

RequestType: InstallProfile

给定一个base64编码的.mobileconfig描述文件(由IPCU或其他工具创建),安装在装置的配置。

7.3.2. Remove Profile(卸载配置文件)

RequestType: RemoveProfile

给定一个载荷标识符(通常是作为一个反向DNS的标识符,如“com.example.cfg.restrictions”),删除从设备的配置文件。

7.3.3. Install Provisioning Profile(安装预装描述配置文件)

RequestType: InstallProvisioningProfile

给定一个base64编码的.mobileprovision文件(由IPCU或其他工具创建),安装在装置的配置。

7.3.4. Remove Provisioning Profile(卸载预先安装的描述配置文件)

RequestType: RemoveProvisioningProfile

该命令会删除配置文件从设备,给出了配置文件的UUID。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.