title: 获取UDID
date: 2018-02-02
categories:
tags: Objective-C,
MDM获取UDID的几个技术点
MDM服务
MDM - Moblie Device Management
介绍MDM的文章:
https://www.jianshu.com/p/6112050ea31a
MDM是服务于企业级应用的一种模式。
MDM可以突破许多App Store应用的束缚。
目前我实践的有获取UDID。
还有一个功能会吸引一些人:静默更新(无提示的强制更新)。这个功能我没有进行过实验和验证,是从几个方面有提示和比较可信的推论。有兴趣的可以进一步研究。
获取UDID的证书
关于如何获取手机的UDID。目前可行的方法是通过安装描述文件来获取到设备的真实UDID。
网上已经有许多相关的文章,大多数转载自这一篇:
http://www.skyfox.org/safari-ios-device-udid.html
这个是关于证书【eizih
http://www.rootmanager.com/iphone-ota-configuration/iphone-ota-setup-with-signed-mobileconfig.html
本文仅介绍iOS方面的技术点,这篇文章有关于证书上传服务器的内容。了解原理可以看看。想拿现成就用下面举例的内容,记得两点就行:1、更改自定义的内容;2、文件的格式为.mobileconfig
描述文件举例:
<!--参考:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ConfigurationProfileExamples/ConfigurationProfileExamples.html-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<dict>
<key>URL</key>
<string>你接受数据的URL</string> <!--接收数据的接口地址-->
<key>DeviceAttributes</key>
<array>
<string>UDID</string>
<string>IMEI</string>
<string>ICCID</string>
<string>VERSION</string>
<string>PRODUCT</string>
</array>
</dict>
<key>PayloadOrganization</key>
<string>安装显示的组织者</string> <!--组织名称-->
<key>PayloadDisplayName</key>
<string>安装显示标题</string> <!--安装时显示的标题-->
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>十六进制,格式为:8-4-4-4-12</string> <!--自己随机填写的唯一字符串-->
<key>PayloadIdentifier</key>
<string>你的标识符</string>
<key>PayloadDescription</key>
<string>安装显示内容</string> <!--描述-->
<key>PayloadType</key>
<string>Profile Service</string>
</dict>
</plist>
![](https://img.haomeiwen.com/i5561285/d0ff215588b81f21.jpg)
关于获取UDID的配置文件有上述的格式。
URL
是把UDID发送给服务器的接口
array
里面的信息是获取的设备信息
PayloadOrganization
是组织者标识
PayloadDisplayName
是显示的标题
PayloadDescription
是显示的描述
证书的签名
关于证书的签名有两种方式:使用SSL证书来进行签名;使用描述文件来进行签名
我在处理的过程中使用的是SSL证书来进行签名。
最好准备有如下六个文件:
ca.crt
额,根证书
ssl.crt
公钥
ssl.pem
公钥的一种格式,还是公钥
ssl.key
私钥
unsign.mobileconfig
未签名配置文件
sign.mobileconfig
已签名配置文件(占位作用,实际是未签名文件拷贝的)
注意的是SSL证书的颁发机构要和CA证书是同一家。
简单介绍一下ssl.crt
和ssl.pem
。ssl.crt
和ssl.pem
是可以互相导出的。
这两个文件内容是一样的。区别在于格式。这个文件其实是ssl证书的私钥。pem是一种格式。一般情况下默认是这种格式。
ca.crt如何获取
我在使用中用了两家公司的。一个是symantec
GeoTrust
。其实不论哪一家,都是可以获取到的,网上有很多方法,现在介绍一种简单粗暴的。
Chrome中,访问官网,然后通过点击浏览器输入框的https:/****
前的锁。来找到证书。拖动详情里的证书可以保存在电脑。(我改机构后使用的证书是和知乎的一样是RSA,GeoTrust官网的是SHA2。这个状态是补这篇博客的时候测试的)
![](https://img.haomeiwen.com/i5561285/4b8d1f2fa6864e98.jpg)
如果获取的证书的格式不正确,可以转换格式。转
.pem
来保证后续处理。
ssl文件需要服务器的同事去请求。
文件准备全之后。打开终端,进入到存放这些证书的文件夹。执行如下的命令
openssl smime -sign -in sign.mobileconfig -out sign.mobileconfig -signer ssl.crt -inkey ssl.key -certfile ca.crt -outform der -nodetach
上面的crt文件
都可以改为pem文件
.
关于签名和未签名
签名后的证书在安装的时候是绿色。未签名的证书是红色。
签名的证书如果过期之后,浏览器可能显示出证书内容,是乱码。
未签名证书也有可能被浏览器展示出来,是明文。
网友评论