签署 Apple MDM 配置文件

Posted

技术标签:

【中文标题】签署 Apple MDM 配置文件【英文标题】:Signing Apple MDM profile 【发布时间】:2012-06-20 08:47:37 【问题描述】:

我正在使用 Apple MDM 服务器,实际上它运行良好。我有一个签名问题,这让客户抱怨证书,所以现在我对其他人如何签署他们的配置文件感兴趣。

我使用 java,但欢迎任何形式的帮助,因为这不是关于如何在 java 中实现代码的特定问题,而是更多关于如何正确签署配置文件的问题。

这就是我们目前的做法:

byte[] data = ...
X509Certificate cert = ...
KeyPair keyPair = ...
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();          
gen.addSigner(keyPair.getPrivate(), cert, CMSSignedGenerator.DIGEST_SHA1, new AttributeTable(new Hashtable<DERObjectIdentifier, Attribute>()), null);
CMSSignedData signedData = gen.generate(new CMSProcessableByteArray(data), true, "BC");

response.setContentType("application/x-apple-aspen-config");
response.getOutputStream().write(signedData.getEncoded());

我们使用的是使用 SHA1withRSA 算法创建的自签名证书,密钥使用 RSA,大小为 2048。

是否有人认为这种方式存在问题,或者您只是以不同的方式进行操作?

请随时使用除 java 以外的其他语言发布代码 - 它可能仍然有帮助。

【问题讨论】:

【参考方案1】:

我做了两件事来解决这个问题。 首先,我将证书更改为 x509 v3 - 它是 v1。然后我添加了 KeyUsage 和 BasicConstraints 以使 ios 接受它为受信任的。 我做的第二件事是将证书本身添加为 CertStore。 这两个步骤使证书类似于 iPhone 配置实用程序使用的证书。

【讨论】:

以上是关于签署 Apple MDM 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Apple iOS MDM 服务器设置设备注册/配置

从 MDM 服务器验证配置字典

如何在没有 Apple 开发者帐户的情况下重新签署 IPA 文件

配置MDM的描述文件

如何在 iPhone 中安装 MDM 配置文件?

离线 MDM 配置文件切换 iOS