整个流程分为两部分:vendor,customer。

一、Vendor

1、成为一个 MDM Vendor

1) 首先你须要拥有一个 Apple Enterprise account($299/年)。

2) 訪问 https://developer.apple.com/contact/submit.php。在这里你能够申请成为一个 MDMVendor:

苹果的承诺是一个工作日内处理完成,处理好会向你的邮箱发送一封通知邮件,并在邮件中提供一些 MDM 相关的文档链接。

实际上的时间可能会比这个稍长一些,以笔者为例。是在一个半天后收到亚洲苹果的邮件回复。

假设申请得到允许,则会在Portal 的 Add Certificate 中多出一个“MDM CSR”选项。

2、创建证书申请

打开钥匙串。点击“钥匙串訪问->证书助理->从证书颁发机构请求证书”,创建一个 CSR。将此 CSR 存储至磁盘。记住“Common Name”字段应该是私钥的名字。创建CRS 时会同一时候创建一个私钥,这个私钥名字(Common Name)会显示在钥匙串中。

3、导出私钥

在钥匙串中选择创建 CSR 时的私钥,导出为vendor.p12文件。

导出时会要求你设置私钥password。请记住这个password。

注意,假设使用 mdm_vendor_sign.py 对 customer 的 csr 进行签名,则须要将私钥导出为 pem 格式(.key文件):

openssl pkcs12 -in vendor.p12 -nocerts -out vendor.key

会要求你输入3次password:vendor.p12 的password、vendor.key 的password、vendor.key 的password。

4、提交 CSR

登录 Portal,进入 Certificates->All,点击 Add Certificate(“+”button),选择Production 下的“MDM CSR” 。

点 Continue->Continue。上传第二步中创建的 CSR,然后点 Generate。

点击 Download,将得到一个 mdm.cer。

5、证书转换:cer->pem。

下载苹果 WWDR 证书和苹果根证书:

http://www.apple.com/certificateauthority/

转换 mdm.cer,WWCR 证书和苹果根证书为 pem 格式:

openssl x509 -inform der -in mdm.cer -out mdm.pem

openssl x509 -inform der -in AppleWWDRCA.cer -out intermediate.pem

openssl x509 -inform der -in AppleIncRootCertificate.cer -out root.pem

注意:假设你使用mdm_vendor_sign.py 脚本签名 vendor 的 plist 文件,则 此步可省略。

二、MDM Customer

1、创建一个 CSR

使用钥匙串创建 CSR,记住密钥对经常使用名称(便于导出)。

导出 CSR。文件名称: MDMCustomer.csr。

2、转换 CSR->cer

openssl req -inform pem -outform der -in customer.csr -out customer.der

注意。假设使用 mdm_vendor_sign.py 脚本可省略此步。

3、从 vendor 获取编码的 plist 文件

customer 将 MDMCustomer.csr 或者 MDMCustomer.csr 提交 vender。

剩下的事情由 vendor 进行。作为 vendor。须要用 mdm_vendor_sign.py 脚本命令( mdmvendorsign-master.zip)或者softthink 的 java 代码(Softhinker.zip)对 customer 提交的 customer.der 进行签名。

这两个工具的下载地址:

https://github.com/grinich/mdmvendorsign http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning/Softhinker.zip?attredirects=0&d=1

下面我们以 mdm_vendor_sign.py 为例。

运行命令:

python mdm_vendor_sign.py --csr MDMCustomer.csr --key 'vendor.key' --mdm mdm.cer

运行结果将生成一个  plist_encoded 文件。

注意,mdm_vendor_sign.py 脚本仅仅须要3个文件:customer 的 CSR、mdm 私钥、mdm 证书。它不须要 WWDR 证书和苹果根证书,也不须要进行复杂的证书格式转换。WWDR和苹果根证书的下载以及 pem 格式转换都是由脚本自己主动进行的。因此要比用 java 代码签名简单得多。

4、上传 plist

用你的 Apple ID 登录 https://identity.apple.com/pushcert/ 。点击“Create aCertificate”,上传 plist 文件。

使用 java 代码签名的请注意。不要上传 plist.xml。而是上传 plist_encoded。

上传后会产生一个 APNS 证书,下载后得到一个 .pem 文件(为方便使用,改名为 push_cert.pem)。

双击 .pem 文件将证书安装到钥匙串中。打开钥匙串,看看到该证书名为“APSP:<uuid>”。例如以下图所看到的。

MDM 证书申请流程(vendor及customer)的更多相关文章

  1. MDM证书申请的流程

    MDM证书申请的流程 整个流程分为两部分:vendor,customer. 一.Vendor 1.成为一个 MDM Vendor 1) 首先你需要拥有一个 Apple Enterprise accou ...

  2. https证书申请流程和简介

    HTTPS证书是什么 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安 ...

  3. Ios证书申请流程

    1. 创建appId l 苹果开发网站→Account-overview下的Cerficates,IDs & Profiles→AppIDs,点击添加 l 填写App ID描述,在App ID ...

  4. 七牛云域名DV SSL证书申请流程以及CDN融合加速配置

    从2017年起,苹果ios以及微信小程序都陆续要求请求连接request地址是使用HTTPS协议的.所以在项目开发阶段就要考虑解决https的问题,同时这也是为项目实际安全所考虑.最近我也是在折腾项目 ...

  5. HTTPS原理和CA证书申请(转)

    原文地址:http://blog.51cto.com/11883699/2160032 众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的 ...

  6. iOS $299刀企业证书申请的过程以及细节补充

    最近申请了iOS的 299刀企业证书,相关过程有些问题,分享出来,以便后来人参考. 申请的过程我主要参考了别人以前的文章,链接如下: 1.https://developer.apple.com/cn/ ...

  7. iOS 证书申请和使用详解(详细版)

    对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成员介绍 1.Certification(证书) ...

  8. iOS证书申请及使用详细说明

    iOS 证书申请和使用详解(详细版)阅读   对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成 ...

  9. iOS 证书申请和使用详解(详细版)阅读

    对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成员介绍 1.Certification(证书) ...

随机推荐

  1. java设计模式---原型模式

    原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现. 浅拷贝 只实现了值拷贝,对于引用对象还是 ...

  2. mybatis之mapper.xml分析

    select: id:方法名,在同一个mapper.xml中,要保持唯一 parameterType:指定输入的参数类型,不是必须的,如果不指定,mybatis会自动识别(推荐指定). resultT ...

  3. RxJava漫谈-RxAndroid使用

    RxJava在github上的地址:https://github.com/ReactiveX/RxJava RxAndroid在github上的地址:https://github.com/Reacti ...

  4. SqlServer 不同服务器之间数据库连接、数据库登录、数据传递

    需求:我是本地数据库想纯SQL访问其它服务器上的数据库,而不使用数据库客户端的连接.这里面就想到了数据库link,通过下面的代码进行创建以后,就可以在本地对链接的服务器数据库进行操作了--添加SQLS ...

  5. ORACLE模拟临时文件、日志成员、口令文件丢失情况与恢复【weber出品】

    一.临时表空间文件.日志文件和口令文件都属于非关键性文件,因为这些文件丢失后并不会影响到整个数据库的完整性. 但是,当这些文件丢失后我们需要快速的找回这些文件.接下来我将模拟临时表空间文件.日志文件和 ...

  6. 关于vis标记

    原来写题目的时候对vis标记都是先memset在标记,今天看见一个只要每次对T值修改,然后看看等不等于T就可以了,真好!

  7. POJ 3630 , HDU 1671 Phone List - from lanshui_Yang

    这道题也是一道找前缀的问题,很自然地要用到Trie树,但是如果用动态Trie树(即用指针开辟内存)的话,虽然在HDU上可以过(可能是HDU的数据比较水),但在POJ上会TLE , 所以这道题只能用静态 ...

  8. Centos 6.x 系统下用yum安装Memcache

    我们的第一步就是导入第三方软件仓库RPMForge ,首页进行centos 官网找到RPMForge下载地址 http://wiki.centos.org/AdditionalResources/Re ...

  9. Symfony2 HttpKernel事件驱动

    HttpKernel:事件驱动       Symfony2 框架层和应用层的工作都是在 HttpKernel::handle()方法中完成,HttpKernel::handle() 的内部的实现其实 ...

  10. Android再学习-便签开发小结-20141119

    这几天的便签开发,首先遇到的问题就是数据库操作问题.现在已经可以读写数据库了,并能将数据放在正确的位置显示. 专门建立了一个数据库操作的包,命名为"...database".新建一 ...