身份证书 - IOS MDM

7
我有几个关于配置文件有效负载中身份证书的问题。
如果问题有些基础,请原谅我的无知。
1.) 我发现,我们可以使用SCEP标准或直接使用PKCS12证书进行设备识别。建议使用SCEP,因为私钥只会被设备知道。那么,如果我要实现SCEP服务器,我需要维护与设备映射的身份证书公钥列表,以便以后用于加密吗?
2.) 实施SCEP服务器的最佳方式是什么?是否有可靠且强大的方法可供采用,而不是自己编写所有内容?
3.) 如果身份证书已过期怎么办?
作为基本版本,在玩耍时,我尝试在不使用SCEP的情况下向有效负载中添加自己的p12证书。
如某个链接参考所述,我尝试将base64编码的p12证书添加到身份有效负载内容键中。但在安装配置文件时,我遇到了错误:
引用: “Test MDM Profile”的身份证书无法找到
  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' 

当我查看'配置文件关键字参考'时,提到我应该在数据中发送有效载荷的二进制表示。所以我进行了尝试,

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

我得到了以下信息:

“IdentityCertificate”证书的密码不正确。

我提供了有效的密码以导出p12证书。

我做错了什么?

1个回答

4

回答你的问题:

1) 我是否需要维护公钥身份证书列表,以便稍后用于加密?

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

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

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

2) 实现SCEP服务器的最佳方法是什么?有可靠的强大的方法可供选择,而不是编写自己的所有内容吗?

有SCEP的开源实现。例如jSCEP有它(我用过它)和EJBCA有它(我也用过它)。我看到其他实现(在Ruby等中)。因此,您可以找到并选择与您的堆栈一起使用的东西。

3) 您需要在身份证书过期之前更新它(与任何其他证书一样)。

4) 如果您的配置文件无法正常工作,我建议您在iPhone配置实用程序中创建相同的配置文件,并与您的配置文件进行比较。大多数情况下,您只错过了一个标签或类似的东西(如果不与工作一起比较,将需要很长时间才能找出问题)。


如果我们正在生成CSR并将其作为P12容器发送到有效载荷中,则可以定义自己的CN。但是在SCEP方式中,设备会生成CSR,对吧?那么我们如何将所需的文本作为CN呢?可以让CN包含UDID。 - BinaryMee
  1. 感谢您的参考。我将使用一些可信的CA进行签名。我们是否可以拥有该CA证书并将其用于从设备到我们自己的SCEP服务器中的pkioperation签名证书?
  2. 您能否详细说明更新证书的过程?更新请求将从设备发送到SCEP服务器吗?
- BinaryMee
1
是的。设备生成CSR。但是,在SCEP负载中,您会指定CN应该是什么样子。因此,您需要定义它。 - Victor Ronin
1
实际上,在这种情况下,您不需要受信任的CA。这只是设备和服务器之间的信任关系。因此,受信任的CA可能过度复杂化。但是,如果您决定采用这种方法,则可以轻松地在jSCEP(例如)中使用它。大多数这些工具都允许您选择要用于签名的证书/私钥。 - Victor Ronin
老实说,我不记得有关身份证书更新的所有细节了。请查看苹果文档。他们在这个主题上有整个章节。 - Victor Ronin
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接