让我先介绍第二阶段和第三阶段。在第二阶段的第一步,iOS设备将发送由设备证书/密钥签名的响应到服务器(每个设备都预装了不同的证书/密钥)。这些设备上的证书/密钥是由苹果颁发的。在服务器端,您应该使用苹果根证书进行验证。在第二阶段的第1-3步中,您的配置文件服务将发送一个SCEP请求。该SCEP请求包含信息,以让设备知道应与哪个SCEP服务器通信。这个SCEP服务器是您的服务器。因此,设备将与此SCEP服务器通信,并请求从中获取新的身份证书。在第三阶段的第2步中,设备响应将用此身份证书的证书/密钥签名。现在,您应该使用您的证书颁发机构根证书对其进行验证。(还有一个注意事项:第二阶段中的SCEP服务器在某种程度上是代理您的证书颁发机构)。现在回答您的问题“MDM配置文件签名,使用哪个证书?”MDM配置文件可以加密和/或签名。
如果您想加密它,可以使用与此设备关联的身份证书对其进行加密。因此,具有此身份的密钥的设备可以对其进行解密。
如果您想签名,可以使用您的服务器密钥进行签名。设备应安装服务器证书,以便可以验证签名。
顺便说一下,在这个主题上。这个图表没有显示的一件事,但通常是必需的 - 整个注册过程之前的第一步是通常安装服务器证书(用于将来的配置文件签名验证)。如果您的服务器证书由知名CA(例如Verisign或类似机构)颁发,则可以跳过此步骤。
如果您有任何后续问题,请告诉我。我花了一段时间才理解整个OTA / MDM注册过程。
更新1
我不知道为什么iOS 6将您的证书视为无法信任的签名。我没有使用由知名CA签名的证书工作过。
我只有一个猜测。可能是在iOS 5和iOS 6之间,他们改变了与钥匙串相关的某些内容。一般来说,每个应用程序都有自己的钥匙串。我相信所有知名证书都应该存储在Mobile Safari钥匙串中。可能是在iOS 6中,MDM / Preferences与MobileSafari共享了这个钥匙串,现在他们不再共享。
在这种情况下,您将需要通过配置文件安装此“DigiCert High Assurance EV Root CA”(以将其放入正确的钥匙串中)。但这只是一个猜测。
关于加密。首先,你是对的,如果每个设备都有自己的私钥,那么它会更安全。在这种情况下,如果有人窃取了配置文件,他们将无法解密它(因为只有设备才有私钥来执行此操作)。如果您正在发送敏感配置文件(例如带有用户名和密码的电子邮件帐户),则特别重要。
密码学的非常高级介绍:
任何密钥(具有任何长度)都可以加密任意长度的数据。所有加密算法都是这样设计的,您可以使用相同的密钥加密任意数量的数据。
非对称算法(例如RSA)很少直接用于加密数据。在大多数情况下,该算法用于为对称算法(例如AES)加密密钥,所有后续的加密/解密都使用AES完成。这样做有两个原因:性能(AES比RSA更快)和资源(AES比RSA更节省资源)。
因此,如果您需要加密配置文件,则使用
PKCS7,它在内部使用RSA、AES(或其他算法)。通常,您会有一个库来完成这个任务(如OpenSSL或BouncyCastle)。因此,您不必弄清所有这些复杂性。
顺便说一句。如果您有问题不适合在SO上提问,欢迎直接联系我(我的联系信息在我的个人资料中)。