Mik*_*kke 4 certificate x509 mdm ios
好的,请看这个图.
有两个小框,表示应如何签署给定的配置文件.
在第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字节的数据,这对于即使是最小的数据也是不够的有效载荷.
让我先来看看第2阶段和第3阶段
在阶段2,步骤1中,iOS设备将发送到服务器响应,该响应由设备证书/密钥签名(每个设备都附带预安装的证书/密钥,每个设备不同).这些设备证书/密钥由Apple发行.
在服务器端,您应该使用Apple Root Cetificate进行验证.
在阶段2,步骤1-3中,您的配置文件服务将发送SCEP请求.此SCEP请求包含让设备知道它应该与哪个SCEP服务器通信的信息.此SCEP服务器是您的服务器.因此,设备将与此SCEP服务器通信,并将从中请求新的身份证书.
在阶段3中,步骤2设备响应将使用此身份证书的证书/密钥进行签名.现在,您应该使用证书颁发机构根证书进行验证.(还有一个说明,第2阶段的SCEP服务器是您的证书颁发机构的代理)
现在回答您的问题"MDM配置文件签名,使用哪个证书?"
MDM配置文件可以加密和/或签名.
如果要对其进行加密,请使用与此设备关联的身份证书对其进行加密.因此,具有此标识密钥的设备,因此它可以解密它.
如果要对其进行签名,请使用服务器密钥进行签名.设备应安装服务器证书,以便验证签名.
BTW.在这个问题上.有一点未在此图中显示,但通常是需要的 - 第一步(在整个注册之前)通常是安装服务器证书(用于将来的配置文件签名验证).如果您的服务器证书由知名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).所以,你不必弄清楚所有这些复杂性.
BTW.如果您有不适合SO的问题,欢迎您直接与我联系(我的个人资料中的联系信息).