在做MDM服務(wù)器過程中,作為MDM的服務(wù)商,申請(qǐng)完MDM服務(wù),生成了MDM.cer證書,然后需要通過此證書生成推送使用的APSP證書,生成步驟如下(引用的地址:http://esoftmobile.com/2015/03/23/ios-devices-mdm/ ,網(wǎng)上一搜一大片,懶得再寫,抄過來的):
申請(qǐng)Vendor
申請(qǐng)成為MDM Vendor
- 首先需要擁有一個(gè) iOS Developer Enterprise Program 帳號(hào);
- 申請(qǐng)成為MDM Vendor,iOS企業(yè)開發(fā)帳號(hào)默認(rèn)不支持MDM功能,需要向蘋果申請(qǐng)才能開通,訪問 https://developer.apple.com/contact/submit.php,并通過iOS企業(yè)開發(fā)帳號(hào)Agent身份登錄,提交申請(qǐng)說明希望成為MDM Vendor,蘋果一般在一個(gè)工作日內(nèi)會(huì)處理完畢,處理完后會(huì)給Agent發(fā)郵件通知,此時(shí)再次登錄到開發(fā)中心Add iOS Certificate界面或多處一個(gè)“MDM SCR”選項(xiàng)。
申請(qǐng)證書
- 在OS X上打開鑰匙串,點(diǎn)擊“鑰匙串訪問->證書助理->從證書頒發(fā)機(jī)構(gòu)請(qǐng)求證書”,創(chuàng)建一個(gè)CSR,將此CSR存儲(chǔ)至磁盤。記住“常用名稱”字段為私鑰的名字,創(chuàng)建CSR的同時(shí),鑰匙串“密鑰”欄中會(huì)增加一個(gè)以該常用名稱為名的私鑰。
- 在鑰匙串中選擇創(chuàng)建CSR時(shí)的私鑰,導(dǎo)出為MDMVendor.p12文件,導(dǎo)出時(shí)會(huì)要求你設(shè)置私鑰密碼,如果設(shè)置密碼請(qǐng)記住這個(gè)密碼(后面會(huì)用到)。
- 登錄iOS Developer Center,進(jìn)入Certificates,點(diǎn)擊Add Certificate(“+”按鈕),選擇Production下面的“MDM SCR”。

點(diǎn)擊Continue->Continue,上傳之前創(chuàng)建的CSR文件,然后點(diǎn)擊Generate。點(diǎn)擊Download,得到一個(gè)mdm.cer證書。
申請(qǐng)MDM Customer
-
創(chuàng)建CSR
使用鑰匙串創(chuàng)建一個(gè)CSR,記住密鑰的常用名稱,導(dǎo)出CSR,命名為MDMCustomer.csr。
獲取編碼的Plist文件
python mdm_verdor_sign.py --csr MDMCustomer.csr -key 'MDMVendor.key' --mdm mdm.cer
MDMCustomer.csr提交給Vendor,Vendor對(duì)Customer提交的MDMCustomer.csr進(jìn)行簽名。我們使用 mdm_vendor_sign.py 工具簽名:
執(zhí)行完后會(huì)生成一個(gè)plist_encoded文件。
-
獲取MDM推送證書
用iOS企業(yè)開發(fā)帳號(hào)的Apple ID登錄 Apple Push Certificates Portal,選擇“Create a Certificate”,上傳之前的plist_encoded文件。上傳后會(huì)生成一個(gè)APNS的證書,下載得到.pem文件,雙擊文件安裝到鑰匙串。打開鑰匙串可查看該證書名為“APSP:xxx”:

此處是分割線,下面的內(nèi)容是我的主要內(nèi)容:
該證書即為MDM指令推送證書,可根據(jù)服務(wù)端需求導(dǎo)出p12或cer格式提供給服務(wù)端開發(fā)人員。
重點(diǎn)在這里, 大家發(fā)現(xiàn)我們生成的p12證書,在我們的mac的鑰匙串并不受信任(我的電腦系統(tǒng):macOS High Sierra 10.13.3), 提示如下:

可是簽名機(jī)構(gòu)明明是蘋果的啊,我又仔細(xì)看了一下和別人的之前的文章查詢發(fā)現(xiàn)了區(qū)別,下面的是之前的蘋果的APSP證書信息:

下面是我們的當(dāng)前的證書信息:

我們發(fā)現(xiàn),簽發(fā)者變了,有之前的Apple Application Integration Certification Authority 變成了Apple Application Integration 2 Certification Authority多了個(gè)2,然后我們會(huì)發(fā)現(xiàn),我們系統(tǒng)默認(rèn)的鑰匙串的簽發(fā)機(jī)構(gòu)里面,沒有這個(gè)帶2的,但是有不帶2的

這也就是為什么之前生成的APSP證書直接就被系統(tǒng)信任,而現(xiàn)在產(chǎn)生的缺不被系統(tǒng)信任,但是為什么蘋果不將這個(gè)也植入到系統(tǒng)呢?換句話話.這個(gè)簽發(fā)者靠譜嗎?我們是不是簽名簽錯(cuò)了呢?為了驗(yàn)證一下,我查找了一下蘋果的所有證書,地址在:https://www.apple.com/certificateauthority/,
發(fā)現(xiàn)蘋果的證書列表如下:

我們看到了帶2的這個(gè)證書,缺沒有看到不帶2的證書,這個(gè)讓我很尷尬,然后我們下載那個(gè)帶2的證書,添加到系統(tǒng),(不需要修改信任策略,直接就被系統(tǒng)信任了) 我們會(huì)發(fā)現(xiàn),我們的APSP證書瞬間變得可信任

也就是說明,添加了這個(gè)中級(jí)簽發(fā)機(jī)構(gòu)的證書,我們的信任鏈就完整了,也就是通過了系統(tǒng)驗(yàn)證,到此,可以確定我們簽名沒有錯(cuò),
總結(jié)一下: 之所以APSP證書添加到mac系統(tǒng)不被信任,是因?yàn)橄到y(tǒng)的信任列表中缺少對(duì)應(yīng)的簽發(fā)者的證書信息,為什么沒有這個(gè),我個(gè)人猜測(cè),應(yīng)該是蘋果正在一個(gè)過渡期,準(zhǔn)備拋棄不帶2的那個(gè)中間簽發(fā)機(jī)構(gòu),這也可能是為什么剛剛那個(gè)不帶2的證書在蘋果的證書列表中找不到的原因吧,估計(jì)會(huì)有很長(zhǎng)一段時(shí)間內(nèi),這兩個(gè)證書都會(huì)共存,而且植入到系統(tǒng)默認(rèn)的信任列表中,我個(gè)人猜的,應(yīng)該是這樣的 謝謝