iOS开发基础100-MDM证书申请流程
<p>在 iOS 设备管理(MDM)中,成为一名合格的 MDM Vendor 是重要的一步。本文将详细介绍申请成为 MDM Vendor 的步骤,以及生成和使用相关证书的具体流程。</p><h2 id="一申请成为-mdm-vendor">一、申请成为 MDM Vendor</h2>
<h3 id="1-先决条件">1. 先决条件</h3>
<p>首先,需要拥有一个 iOS Developer Enterprise Program 账户。默认情况下,iOS 企业开发账户不支持 MDM 功能,因此你必须向苹果申请开通。</p>
<h3 id="2-提交申请">2. 提交申请</h3>
<ol>
<li>访问苹果开发者网站:MDM 功能申请页面。</li>
<li>使用企业开发账户的 Agent 身份登录。</li>
<li>提交申请说明,表明希望成为 MDM Vendor。通常,苹果会在一个工作日内处理申请。</li>
<li>申请处理完毕后,苹果会给 Agent 发邮件通知。此后,登录开发者中心,在添加 iOS 证书界面可以看到一个新的 "MDM CSR" 选项。</li>
</ol>
<h2 id="二生成私钥和-csr-文件">二、生成私钥和 CSR 文件</h2>
<h3 id="1-创建私钥">1. 创建私钥</h3>
<ol>
<li>
<p>打开钥匙串访问工具,点击“钥匙串访问”→“证书助理”→“从证书颁发机构请求证书”。</p>
</li>
<li>
<p>在弹出的窗口中,填写如下信息:</p>
<ul>
<li>用户电子邮件:注册的苹果账号(Apple ID)。</li>
<li>常用名称:输入一个名称(记住这个名称,需要提供给开发人员)。</li>
<li>CA 电子邮件地址:不填写。</li>
<li>请求的内容:选择“存储到磁盘”。</li>
</ul>
</li>
<li>
<p>点击继续,保存生成的文件。通常会生成一个名为 <code>CertificateSigningRequest.certSigningRequest</code> 的文件,可以重命名为 <code>MdmPushChat.certSigningRequest</code> 以便管理。在钥匙串内会生成一个私钥。</p>
</li>
<li>
<p>将私钥导出为 <code>vendor.p12</code>,导出时设置一个密码,并记住这个密码。</p>
</li>
</ol>
<h3 id="2-生成私钥文件">2. 生成私钥文件</h3>
<p>使用 <code>openssl</code> 命令将 <code>vendor.p12</code> 转换为 <code>vendor.key</code> 文件:</p>
<pre><code class="language-sh">openssl pkcs12 -in vendor.p12 -nocerts -out vendor.key
</code></pre>
<p>在此过程中,会提示输入三次密码:<code>vendor.p12</code> 的密码、<code>vendor.key</code> 的密码、再输入一次 <code>vendor.key</code> 的密码。</p>
<h2 id="三提交-csr-并生成证书">三、提交 CSR 并生成证书</h2>
<h3 id="1-登录开发者账号">1. 登录开发者账号</h3>
<ol>
<li>打开苹果开发者网站并登录。</li>
<li>进入“Certificates, Identifiers & Profiles”页面。</li>
</ol>
<h3 id="2-提交-csr-文件">2. 提交 CSR 文件</h3>
<ol>
<li>
<p>点击 Certificates,然后选择 “Production” 并点击加号按钮。</p>
</li>
<li>
<p>选择 “MDM CSR”。</p>
</li>
<li>
<p>点击 Continue。</p>
</li>
<li>
<p>在上传 CSR 文件页面,选择步骤一中生成的 <code>MdmPushChat.certSigningRequest</code> 文件,并点击 Continue。</p>
</li>
<li>
<p>苹果服务器会生成 MDM 证书,点击 Download 下载 <code>MDM.cer</code> 文件。</p>
</li>
</ol>
<h2 id="四生成-pem-文件">四、生成 PEM 文件</h2>
<h3 id="1-下载苹果证书">1. 下载苹果证书</h3>
<p>从苹果证书授权页面下载 Apple 根证书和 WWDR 证书。文件名分别为:<code>AppleIncRootCertificate.cer</code> 和 <code>AppleWWDRCA.cer</code>。</p>
<h3 id="2-使用-openssl-生成-pem-文件">2. 使用 <code>openssl</code> 生成 PEM 文件</h3>
<p>运行以下命令,将证书转换为 PEM 格式:</p>
<pre><code class="language-sh">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
</code></pre>
<p>上述命令生成了三个 PEM 格式的文件:<code>mdm.pem</code>, <code>intermediate.pem</code>, <code>root.pem</code>。</p>
<h2 id="五mdm-customer-的生成和处理">五、MDM Customer 的生成和处理</h2>
<h3 id="1-生成新的-csr-文件">1. 生成新的 CSR 文件</h3>
<p>为了区分不同的 CSR 文件,再次生成一个新的 CSR 文件,常用名称应有所不同。例如命名为 <code>MDMCustomer.csr</code>。</p>
<h3 id="2-转换-csr-为-der-格式的文件">2. 转换 CSR 为 DER 格式的文件</h3>
<pre><code class="language-sh">openssl req -inform pem -outform der -in MDMCustomer.csr -out customer.der
</code></pre>
<h3 id="3-mdm-vendor-对-customerder-文件签名">3. MDM Vendor 对 <code>customer.der</code> 文件签名</h3>
<ol>
<li>MDM Customer 将生成的 <code>customer.der</code> 文件交给 MDM Vendor。</li>
<li>MDM Vendor 使用 Softthink 的 Java 代码对 <code>customer.der</code> 进行签名。可以在Softthink 下载地址中获取所需的代码。</li>
</ol>
<p>创建一个新的 Java 项目,将 Softthink 的代码和 <code>dom4j-1.6.1.jar</code> 导入,将上面生成的文件和 <code>Test.java</code> 放到同一个目录下。</p>
<p>还需要解决 <code>sun.misc.BASE64Encoder</code> 找不到的问题,具体解决方法请自行百度。</p>
<h3 id="4-执行-java-代码">4. 执行 Java 代码</h3>
<p>在 <code>Test.java</code> 中设置 alias 和 password:</p>
<p>执行代码后,会生成一个 <code>plist_encoded</code> 文件。</p>
<h3 id="5-上传-plist">5. 上传 plist</h3>
<ol>
<li>使用 Apple ID 登录苹果 Push 证书门户。</li>
<li>点击“Create a Certificate”,上传 <code>plist_encoded</code> 文件。</li>
<li>上传后会生成一个 APNS 证书,下载得到 <code>.pem</code> 文件(可以重命名为 <code>push_cert.pem</code>)。双击该文件,将证书安装到钥匙串中。</li>
</ol>
<h3 id="6-导出-p12-格式证书">6. 导出 p12 格式证书</h3>
<p>打开钥匙串,从中导出刚才安装的证书为 p12 格式。这是 MDM 中需要用到的证书。</p>
<h2 id="六解析">六、解析</h2>
<h3 id="1-安全层面">1. 安全层面</h3>
<ul>
<li><strong>私钥和公钥</strong>:使用非对称加密保证传输数据的安全性。</li>
<li><strong>证书校验</strong>:通过苹果服务器验证 CSR 文件的合法性和正确性。</li>
<li><strong>签名和验证</strong>:确保传输文件和证书的完整性和不可篡改性。</li>
</ul>
<h3 id="2-证书管理">2. 证书管理</h3>
<ul>
<li><strong>设备间信任</strong>:通过证书建立设备间的受信任连接。</li>
<li><strong>证书生命周期</strong>:证书的生成、分发、使用、更新和撤销,形成一个完整的生命周期管理。</li>
</ul>
<h3 id="3-系统安全">3. 系统安全</h3>
<ul>
<li><strong>MDM Vendor 与 Customer</strong>:MDM Vendor 负责生成和签署证书,MDM Customer 负责维护和管理设备。</li>
<li><strong>双向认证</strong>:确保相互通信的双方都经过验证,防止中间人攻击。</li>
</ul>
<p>通过以上详尽步骤,开发者可以成功申请成为 MDM Vendor,并完成相关证书的生成。</p>
</div>
<div id="MySignature" role="contentinfo">
将来的你会感谢今天如此努力的你!
版权声明:本文为博主原创文章,未经博主允许不得转载。<br><br>
来源:https://www.cnblogs.com/chglog/p/16068550.html
頁:
[1]