iOS MDM 生成的APSP推送證書不被鑰匙串信任原因

在做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

  1. 首先需要擁有一個(gè) iOS Developer Enterprise Program 帳號(hào);
  2. 申請(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)證書

  1. 在OS X上打開鑰匙串,點(diǎn)擊“鑰匙串訪問->證書助理->從證書頒發(fā)機(jī)構(gòu)請(qǐng)求證書”,創(chuàng)建一個(gè)CSR,將此CSR存儲(chǔ)至磁盤。記住“常用名稱”字段為私鑰的名字,創(chuàng)建CSR的同時(shí),鑰匙串“密鑰”欄中會(huì)增加一個(gè)以該常用名稱為名的私鑰。
  2. 在鑰匙串中選擇創(chuàng)建CSR時(shí)的私鑰,導(dǎo)出為MDMVendor.p12文件,導(dǎo)出時(shí)會(huì)要求你設(shè)置私鑰密碼,如果設(shè)置密碼請(qǐng)記住這個(gè)密碼(后面會(huì)用到)。
  3. 登錄iOS Developer Center,進(jìn)入Certificates,點(diǎn)擊Add Certificate(“+”按鈕),選擇Production下面的“MDM SCR”。
image.png

點(diǎn)擊Continue->Continue,上傳之前創(chuàng)建的CSR文件,然后點(diǎn)擊Generate。點(diǎn)擊Download,得到一個(gè)mdm.cer證書。

申請(qǐng)MDM Customer

  1. 創(chuàng)建CSR

    使用鑰匙串創(chuàng)建一個(gè)CSR,記住密鑰的常用名稱,導(dǎo)出CSR,命名為MDMCustomer.csr。

  2. 獲取編碼的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文件。

  1. 獲取MDM推送證書

    用iOS企業(yè)開發(fā)帳號(hào)的Apple ID登錄 Apple Push Certificates Portal,選擇“Create a Certificate”,上傳之前的plist_encoded文件。上傳后會(huì)生成一個(gè)APNS的證書,下載得到.pem文件,雙擊文件安裝到鑰匙串。打開鑰匙串可查看該證書名為“APSP:xxx”:

image.png

此處是分割線,下面的內(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), 提示如下:

image.png

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

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

我們發(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的
image.png

這也就是為什么之前生成的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)蘋果的證書列表如下:

image.png

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

也就是說明,添加了這個(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)該是這樣的 謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 這個(gè)證書就是MDM Server 和 APNs推送消息所需要的證書,當(dāng)然和APP推送證書完全不同,雖然功能差...
    Light413閱讀 18,990評(píng)論 37 13
  • 前言 關(guān)于MDM,谷歌搜遍了也搜不出多少資料,甚至有的資料會(huì)誤導(dǎo)小伙伴們。我實(shí)現(xiàn)了MDM并且整理了一份詳細(xì)的文檔,...
    誰更勇猛閱讀 11,287評(píng)論 10 21
  • 準(zhǔn)備 整個(gè)流程主要包括兩個(gè)部分,vendor和customer。過程中會(huì)用到一個(gè)python腳本“mdm_vend...
    2MuchT閱讀 10,583評(píng)論 16 10
  • 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Pro...
    奮斗的蝸牛閱讀 7,852評(píng)論 2 20
  • 引言關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Prof...
    molake閱讀 48,909評(píng)論 7 62

友情鏈接更多精彩內(nèi)容