iOS MDM配置文件签名,使用哪个证书?

时间:2013-02-22 12:46:13

标签: ios certificate x509 mdm

好的,请看this diagram

有两个小方框,表示应如何签署给定的个人资料。

在第2阶段,第1步,它显示“Apple颁发的证书”,但它没有说哪个苹果颁发证书(他们发出多个证书)。我已经尝试过我的开发人员证书和MDM(APNS)证书。这不是其中之一。是否有我需要的第三个魔法证书(我怎么得到它)?

在第3阶段,第2步,它显示“身份证书”,但同样在细节上有点粗略。我所知道的唯一身份证书是使用设备的私钥安装在设备上的,服务器应该如何使用它来签署配置文件?

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

跟进问题

我的服务器证书由“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 个答案:

答案 0 :(得分:7)

让我先讨论第2阶段和第3阶段

在阶段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的问题,欢迎您直接与我联系(我的个人资料中的联系信息)。