签署Apple MDM配置文件

时间:2012-06-20 08:47:37

标签: ios x509certificate mdm

我正在使用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 个答案:

答案 0 :(得分:0)

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