身份证书 - IOS MDM

Identity certificate - IOS MDM

我对配置文件负载中的身份证书有一些疑问。

原谅我的无知,如果有些问题很基础

1.)我发现,我们可以直接使用SCEP标准或者PKCS12证书来进行设备识别。建议使用 SCEP,因为只有设备知道私钥。因此,如果我要实施 SCEP 服务器,我是否需要维护映射到设备的身份证书的 Public 密钥列表,以便以后可以使用它进行加密?

2.) 实施 SCEP 服务器的最佳方法是什么?有什么靠谱的方法可以采用它而不是自己写所有东西吗?

3.) 身份证过期了怎么办?

作为基础版玩玩,我尝试在不使用 SCEP 的情况下将自己的 p12 证书添加到 Payload。

我尝试在身份有效负载内容密钥中添加 base64 编码的 p12 证书,如某些 link 参考中所述。我收到一个错误

The identity certificate for “Test MDM Profile” could not be found

正在安装配置文件。

  identity_payload['PayloadType'] = 'com.apple.security.pkcs12'
  identity_payload['PayloadUUID'] = "RANDOM-UUID-STRING"
  identity_payload['PayloadVersion'] = 1
  identity_payload['PayloadContent'] = Base64.encode64(File.read "identity.p12")
  identity_payload['Password'] = 'p12Secret' 

当我检查'Configuration Profile key reference'时,有人提到我应该在数据中发送有效载荷的二进制表示。 所以我试过了,

  identity_payload['PayloadContent'] = ConvertToBinary(File.read "identity.p12")

我知道了,

The password for the certificate “IdentityCertificate” is incorrect

我正在提供用于导出 p12 证书的有效密码。

我做错了什么?

回答您的问题:

1) 我是否需要维护映射到设备的身份证书的 Public 密钥列表,以便我以后可以使用它进行加密?

是的。你需要某种映射。您可以采用以下几种方式:

  • 只需在数据库中存储证书通用名称和设备 UDID 之间的映射。
  • 使CN包含UDID(我喜欢这种方法,因为它简化了初始检查)

正如您所指出的,您将需要 public 密钥来加密此设备的有效载荷。

2) 实施 SCEP 服务器的最佳方法是什么?有什么可靠的健壮方法可以采用它而不是自己编写所有东西吗?

有 SCEP 的开源实现。例如 jSCEP have it (I used it) and EJBCA 有它(我也用过)。我看到了其他实现(在 Ruby 等中)。所以,你可以找到一个适合你的堆栈的东西。

3) 您需要在身份证书到期前更新身份证书(与任何其他证书的方式相同)。

4) 如果您的配置文件不起作用,我建议您在 iPhone 配置实用程序中创建相同的配置文件并与您的进行比较。大多数时候,您只错过了一个标签或类似的东西(如果不与工作标签进行比较,将需要很多时间才能弄清楚)。