蘋果手機設備管理:iphone設備管理不見了怎麼弄

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」。

開發蘋果手機設備管理服務

點 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:」,如下圖所示:

開發蘋果手機設備管理服務

右鍵導出「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)

開發蘋果手機設備管理服務

描述文件基本信息填寫

開發蘋果手機設備管理服務

憑證裡面添加https的三個證書

cloud.com_bundle.crt

root.p12(預先填好密碼)

MDMCustomer.p12(預先填好密碼)

開發蘋果手機設備管理服務

伺服器URL和登記URL分別是mdm伺服器的兩個url(server,checkin)

主題是apns證書中的用戶ID

開發蘋果手機設備管理服務

身份選擇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。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/213755.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-08 18:08
下一篇 2024-12-08 18:11

相關推薦

發表回復

登錄後才能評論