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