iOS MDM詳解(2)— 證書的製做

簡介

這個證書就是MDM Server 和 APNs推送消息所須要的證書,固然和APP推送證書徹底不一樣,雖然功能差很少。python

MDM中分爲Vendor 和Customer兩個角色,即服務商和用戶。
若是你有個企業開發者帳號,沒錯就是$299的那個,你既能夠是Vendor,也能夠是Customer。做爲一個Vendor,你能夠爲Customer的證書請求文件頒發個用於簽名的證書。git

若是你僅僅是個Customer也就是沒有$299的帳號,只能等Vendor給你頒發個.cer證書、簽名產生個plist_encoded 文件,而後提交到identity.apple.com/pushcert/,若是文件不正確會提示格式錯誤,若正確會生成一個用於推送的證書mdm.pemgithub

如下以一個Vendor的角色進行如下操做。後端

一、 開通MDM服務功能

默認的企業開發者帳號沒有開通MDM服務,須要申請開通MDM服務成爲Vendor,輸入企業帳號和密碼登陸,提示你填寫一些東西申請服務。若是你按要求填寫了,提交了,而後就是傻傻的等待了。當時我提交後一週後也沒反應,索性直接打電話人工客服,一分鐘搞定。若是開通成功後會發郵箱通知,而後在製做證書的時候會出現MDM CSR選項。以下:bash

MDM_CSR.png

二、生成MDM證書

做爲一個vendor首先要生成個用於簽名的.cer證書,具體步驟以下

  • 打開鑰匙串生成mdm_vendor.certSigningRequestapp

  • 導出祕鑰mdm_vendor.p12記住導出密碼下面簽名時會用到ide

  • 登陸開發者中心製做MDM CSR類型的證書,下載即獲得證書mdm.cer。此證書用來爲customer生成的.csr證書文件簽名。spa

####做爲一個customerdebug

  • 終端中生成customer.csr文件3d

    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文件的簽名網上廣泛有兩種方法,一個Python腳本,一個時Java版的Softthinker,在此使用Python腳本。

Python腳本源代碼,使用過程當中可能因爲Mac中python版本有問題,沒法下載所需的AppleIncRootCertificate.cerAppleWWDRCA.cer 這兩個官方提供的 證書。因此改了下腳本,直接把證書文件下載到本地。

根據要求須要把 mdm_vendor.p12 轉化爲 mdm_vendor.key格式的:

openssl pkcs12 -in mdm_vendor.p12 -nocerts -out mdm_vendor.key
複製代碼

而後在終端中執行如下操做

python mdm_vendor_sign.py 
--key mdm_vendor.key  
--csr customer.csr 
--mdm mdm.cer 
--root AppleIncRootCertificate.cer 
--WWDR AppleWWDRCA.cer 
複製代碼

執行過程當中提示輸入密碼密碼,結束,目錄下多出一個"plist_encoded"的簽名文件。 執行結果如圖:

MDM_SIGN.png

——————

個人目錄文件截圖:

MDM_RESULT.png

我用於簽名的Python文件爲了方便操做在源文件的基礎上作了些修改。

identity.apple.com/pushcert/ 提交 生成的plist_encoded文件,若是文件有問題會提示無效的文件,若是一切正常會生成咱們最後須要的MDM_Certificate.pem的證書,之後server和APNs通訊就是需這個證書。

三、驗證MDM_Certificate.pem證書有效性並進行格式轉化

以上獲得了MDM_Certificate.pem,那麼咱們獲得的這個是否是正確的呢?咱們能夠再終端中驗證一下:

openssl s_client -connect gateway.push.apple.com:2195 -cert MDM_Certificate.pem -key customerPrivateKey.pem -debug -showcerts -status

若是提示了錯誤,或鏈接直接closed則證書有問題。若是一直一直處於等待輸入狀態,輸入任意、退出則證書是有效的。

接下來幾乎網上全部的文章都是這樣的

image

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

證書-用戶ID

其中用戶ID : com.apple.mgmt.External.* 這個很重要,在配置.mobileconfig文件要用到。

而後就沒了,還有人說直接導出爲.p12格式。可是爲啥個人安裝後根本導不出p12格式呢? 咱們是Java後臺因此須要p12格式的,這裏就須要進一步的格式轉化了。

在終端中:

openssl pkcs12 -export -in MDM_Certificate.pem -out MDM_Certificate.p12 -inkey customerPrivateKey.pem

四、至此獲得和APNs通訊的證書MDM_Certificate.p12

把證書和密碼交給咱們的後端人員,證書製做完成,是否是和APP的推送證書徹底不一樣?我感受徹底是兩個概念。

相關文章
相關標籤/搜索