簡介
這個證書就是MDM Server 和 APNs推送消息所需要的證書惑惶,當然和APP推送證書完全不同幅骄,雖然功能差不多望艺。
MDM中分為Vendor 和Customer兩個角色票腰,即服務商和用戶堕油。
如果你有個企業(yè)開發(fā)者賬號甜滨,沒錯就是$299的那個乐严,你既可以是Vendor,也可以是Customer。作為一個Vendor衣摩,你可以為Customer的證書請求文件頒發(fā)個用于簽名的證書昂验。
如果你僅僅是個Customer也就是沒有$299的賬號,只能等Vendor給你頒發(fā)個
.cer
證書艾扮、簽名產(chǎn)生個plist_encoded 文件既琴,然后提交到https://identity.apple.com/pushcert/,如果文件不正確會提示格式錯誤泡嘴,若正確會生成一個用于推送的證書mdm.pem
甫恩。
以下以一個Vendor的角色進行以下操作。
1酌予、 開通MDM服務功能
默認的企業(yè)開發(fā)者賬號沒有開通MDM服務,需要申請開通MDM服務成為Vendor磺箕,輸入企業(yè)賬號和密碼登錄奖慌,提示你填寫一些東西申請服務。如果你按要求填寫了松靡,提交了简僧,然后就是傻傻的等待了。當時我提交后一周后也沒反應击困,索性直接打電話人工客服涎劈,一分鐘搞定广凸。如果開通成功后會發(fā)郵箱通知阅茶,然后在制作證書的時候會出現(xiàn)MDM CSR選項。如下:
2谅海、生成MDM證書
作為一個vendor首先要生成個用于簽名的.cer證書
脸哀,具體步驟如下
打開鑰匙串生成
mdm_vendor.certSigningRequest
導出秘鑰
mdm_vendor.p12
記住導出密碼下面簽名時會用到登錄開發(fā)者中心制作
MDM CSR
類型的證書,下載即得到證書mdm.cer
扭吁。此證書用來為customer生成的.csr證書文件簽名撞蜂。
作為一個customer
-
終端中生成
customer.csr
文件openssl genrsa -des3 -out customerPrivateKey.pem 2048 openssl req -new -key customerPrivateKey.pem -out customer.csr
或者利用鑰匙串生成,然后以.csr后綴保存侥袜,然后導出秘鑰.p12格式并記住密碼
提交
customer.csr
文件 給vendor 進行簽名處理蝌诡。
對customer.csr
簽名
關于customer.csr
文件的簽名網(wǎng)上普遍有兩種方法,一個Python腳本枫吧,一個時Java版的Softthinker,在此使用Python腳本浦旱。
Python腳本源代碼,使用過程中可能由于Mac中python版本有問題九杂,無法下載所需的AppleIncRootCertificate.cer
和AppleWWDRCA.cer
這兩個官方提供的 證書颁湖。所以改了下腳本,直接把證書文件下載到本地例隆。
根據(jù)要求需要把 mdm_vendor.p12
轉(zhuǎn)化為 mdm_vendor.key
格式的:
openssl pkcs12 -in mdm_vendor.p12 -nocerts -out mdm_vendor.key
然后在終端中執(zhí)行以下操作
python mdm_vendor_sign.py
--key mdm_vendor.key
--csr customer.csr
--mdm mdm.cer
--root AppleIncRootCertificate.cer
--WWDR AppleWWDRCA.cer
執(zhí)行過程中提示輸入密碼密碼甥捺,結(jié)束,目錄下多出一個"plist_encoded"的簽名文件镀层。
執(zhí)行結(jié)果如圖:
——————
我的目錄文件截圖:
我用于簽名的Python文件為了方便操作在源文件的基礎上做了些修改镰禾。
到https://identity.apple.com/pushcert/ 提交 生成的plist_encoded
文件,如果文件有問題會提示無效的文件唱逢,如果一切正常會生成我們最后需要的MDM_Certificate.pem
的證書羡微,以后server和APNs通信就是需這個證書。
3惶我、驗證MDM_Certificate.pem證書有效性并進行格式轉(zhuǎn)化
以上得到了MDM_Certificate.pem
,那么我們得到的這個是不是正確的呢妈倔?我們可以再終端中驗證一下:
openssl s_client -connect gateway.push.apple.com:2195 -cert MDM_Certificate.pem -key customerPrivateKey.pem -debug -showcerts -status
如果提示了錯誤,或連接直接closed則證書有問題绸贡。如果一直一直處于等待輸入狀態(tài)盯蝴,輸入任意毅哗、退出則證書是有效的。
接下來幾乎網(wǎng)上所有的文章都是這樣的

雙擊MDM_Certificate.pem
安裝捧挺,查看證書信息如圖

其中用戶ID : com.apple.mgmt.External.*
這個很重要虑绵,在配置.mobileconfig文件要用到。
然后就沒了闽烙,還有人說直接導出為.p12格式翅睛。但是為啥我的安裝后根本導不出p12格式呢? 我們是Java后臺所以需要p12格式的,這里就需要進一步的格式轉(zhuǎn)化了黑竞。
在終端中:
openssl pkcs12 -export -in MDM_Certificate.pem -out MDM_Certificate.p12 -inkey customerPrivateKey.pem
4捕发、至此得到和APNs通信的證書MDM_Certificate.p12
。
把證書和密碼交給我們的后端人員很魂,證書制作完成扎酷,是不是和APP的推送證書完全不同?我感覺完全是兩個概念遏匆。