在iOS设备和MDM Server通过APNS进行通信,对于消息的推送,我们需要专用的推送证书文件和密码,本文介绍生成MDMPush.p12证书文件及密码的过程。
(1)创建MDM供应商CSR
① 在Mac上打开“钥匙串访问”;
② 菜单栏:“钥匙串访问”->“证书助理”->“从证书颁发机构请求证书...”;
③ 使用与将要使用的开发人员帐户相同的电子邮件。输入一个通用名称;
④ 选择“保存到磁盘”,命名为:CertificateSigningRequest.certSigningRequest;
(2)生成mdmvendor.cer文件
登录苹果开发者账号(https://developer.apple.com/account),进入“证书、标识符和描述文件”->“证书(英文)”;
在“Certificates, Identifiers & Profiles”下点击“Certificates”旁边的蓝色的“”;
在“Server”下选择“MDM CSR”
上传第(1)步生成的“CertificateSigningRequest.certSigningRequest”文件。然后下载.cer文件,把它命名为mdmvendor.cer。
(3)导出MDM私钥
① 在“钥匙串访问”中打开您的mdmvendor.cer文件;
② 从左侧选择证书,你应该发现证书名为MDM供应商:通用名称;
③ 这一行应该有一个展开的箭头,显示“专用密钥”;
④ 右键单击私钥,选择导出,并保存为private.p12,此步骤需要设置密码,需要自己记住;
(4)创建推送证书CSR
① 在“钥匙串访问”中;
② 再次从菜单栏:“钥匙串访问”->“证书助理”->“从证书颁发机构请求证书...”;
③ 输入您的电子邮件(可以是其他电子邮件,不必是开发者账号)和通用名称;
④ 选择保存到磁盘,并将其命名为push.csr(与步骤(1)相同,不在附图);
(5)提取MDM私钥和MDM供应商证书
使用命令提取私钥:
openssl pkcs12 -in private.p12 -nocerts -out key.pem
注意:在步骤(3)的导出过程中在private.p12文件中设置了密码,则需要在此命令中输入相同的导入密码,此外,您还需要输入PEM密码。
使用以下命令从key.pem中提取private.key:
openssl rsa -in key.pem -out private.key
注意:这个命令要求您输入key.pem的密码,需要和上一步的设置保持一致。
使用以下命令提取mdm证书:
openssl pkcs12 -in private.p12 -clcerts -nokeys -out cert.pem
注意:在步骤3中的导出过程中在private.p12文件中添加了密码,需要在此命令中输入相同的导入密码。
使用以下命令将证书转换为DES:
openssl x509 -in cert.pem -inform PEM -out mdm.cer -outform DES
(6)使用python命令生成applepush.csr
确保电脑安装了python版本,且版本为2(不能太高);
通过git命令下载代码:
git clone https://github.com/vineetchoudhary/Apple-iOS-MDM-Server.git
复制private.key、push.csr、mdm.cer到Apple-iOS-MDM-Server/vendor/下。
然后在Apple-iOS-MDM-Server/vendor/下执行下面的python命令:
python mdm_vendor_sign.py --key private.key --csr push.csr --mdm mdm.cer --out applepush.csr
此命令生成了applepush.csr文件。
(7)从Apple获得MDM推送证书
① 到Apple的推送证书门户(https://identity.apple.com/pushcert/);
② 然后单击创建证书按钮,上传applepush.csr以在表中创建一个新条目;
③ 下载生成的推送证书;
(8)准备MDMPush.p12推送证书
① 在“钥匙串访问”中查找推送证书。看起来像APSP:xxxxxx;
② 右键单击证书并选择“显示简介”;
③ 复制“用户ID”,它应该看起来像com.apple.mgmt。我们稍后会使用它;
④ 右键单击证书并选择“导出…”。。。并将其保存为MDMPush.p12,并设置证书密码;
自此,用于APNS推送MDM消息的证书制作完成。