iOS MDM配置文件签名,应该使用哪种证书?

4

好的,请看这个图示

有两个小方框,表示给定配置文件应该如何签名。

在第二阶段,第一步中,它说“Apple发行证书”,但它没有说明是哪个苹果发行的证书(他们发行的不止一个)。我已经尝试过我的开发者证书和MDM(APNS)证书。它不是其中之一。我是否需要第三个神奇的证书(以及如何获取它)?

在第三阶段,第二步中,它说“身份证书”,但再次缺乏细节。我知道的唯一身份证书是使用设备的私钥安装在设备上的,服务器如何使用它来签署配置文件?

我唯一让它工作的方法是创建自己的自签名证书,并将其预先安装在设备上。显然,这不是一种优雅或特别安全的做事方式。

后续问题

我的服务器证书由“DigiCert High Assurance EV Root CA”颁发,并且在列表http://support.apple.com/kb/ht5012中,但是iOS 6设备在签署配置文件时被视为“不受信任”,但对于SSL来说还好,这很奇怪。虽然iOS 5设备没问题。有什么想法吗?
我也不太理解加密部分。从MDM文档中得知:“每个设备必须具有唯一的客户端身份验证证书。您可以将这些证书作为PKCS#12容器或通过SCEP交付。建议使用SCEP,因为该协议可确保身份验证的私钥仅存在于设备上。”
虽然我同意只有设备本身知道其私钥最终更安全,但它有些问题,因为2048位公钥只能用于加密大约100字节的数据,这甚至不足以用于最小可能的有效负载。
1个回答

7
让我先介绍第二阶段和第三阶段。在第二阶段的第一步,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上提问,欢迎直接联系我(我的联系信息在我的个人资料中)。

谢谢,我已经在原问题下添加了我的后续问题。 :) - Mikkel Løkke
@VictorRonin,请问您能看一下这个问题吗?https://stackoverflow.com/q/44886700/3145189 - Sheshnath

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