mobileconfig文件

通过Safari与mobileconfig获取iOS设备UDID

UDID (Unique Device Identifier),唯一标示符,是iOS设备的一个唯一识别码,每台iOS设备都有一个独一无二的编码,UDID其实也是在设备量产的时候,生成随机的UUID写入到iOS设备硬件或者某一块存储器中,所以变成了固定的完全不会改变的一个标识,用来区别每一个唯一的iOS设备。

随着苹果对程序内获取UDID封杀的越来越严格,私有api已经获取不到UDID,Mac地址等信息,继而出现了使用钥匙串配合uuid等等方法变相实现

制作mobileconfig需要的文件:

(1)mbaike.crt(https服务器端使用证书文件)
(2)mbaike.key(https服务器端使用证书对应的密钥,其实就是一个txt文件)
(3)ca-bundle.pem(startssl官网下载的跟证书文件,具体的在哪里下载,请在startssl控制面板中查找)
(4)unsigned.mobilecofig文件(IOS端生成的未签名的配置描述文件) 

2、在mac上通过openssl命令生成签名后的signed.mobileconfig文件:

openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaike.key -certfile ca-bundle.pem -outform der -nodetach

 

也可以把key文件的密码写入到key文件中

openssl rsa -in mbaike.key -out mbaikenopass.key

 

第二步的命令就应该是

openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaikenopass.key -certfile ca-bundle.pem -outform der -nodetach

 

这样就完成了对mobileconfig的签名工作了

pfx生成pem

openssl pkcs12 -in test.pfx -clcerts -nokeys -out cert.pem  可能需要密码

pfx生成key

openssl pkcs12 -in test.pfx -nocerts -out cert.key

ca文件就是crt文件

 

使用原理:

1.在你的服务器上创建一个.mobileconfig的XML格式的描述文件;

 

2.服务器需要的数据,比如:UDID,IMEI需要在.mobileconfig描述文件中配置好,以及服务器接收数据的URL地址;

 

3.用户在客户端通过某个点击操作完成.mobileconfig描述文件的安装;

 

4.手机在安装描述文件时,会向描述文件中配置好的URL发送UDID,IMEI等设备信息数据;

 

5.服务端收到设备信息数据后,通过scheme打开客户端的app将设备信息作为参数传给客户端;

 

6.客户端在appDelegate里面将 这个参数存到本地 ,并且存到钥匙串,这样即时app被卸载重装,也无需再次安装;

 

配置文件的信息:

<?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>http://127.0.0.1:6699/receive.do</string>
            <key>DeviceAttributes</key>
            <array>
                <string>SERIAL</string>
                <string>MAC_ADDRESS_EN0</string>
                <string>UDID</string>
                <string>IMEI</string>
                <string>ICCID</string>
                <string>VERSION</string>
                <string>PRODUCT</string>
            </array>
        </dict>
        <key>PayloadOrganization</key>
        <string>dev.skyfox.org</string>
        <key>PayloadDisplayName</key>
        <string>查询设备UDID</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadUUID</key>
        <string>3C4DC7D2-E475-3375-489C-0BB8D737A653</string>
        <key>PayloadIdentifier</key>
        <string>cn.com.aaaa</string>
        <key>PayloadDescription</key>
        <string>本文件仅用来获取设备ID</string>
        <key>PayloadType</key>
        <string>Profile Service</string>
    </dict>
</plist>

 

其中,DeviceAttributes对应的key是你想要的信息,还可以添加其他信息,操作系统(iOS)安装完描述文件,获取完这些信息,会将这些信息进行编码,传值给你描述文件中的URL地址,这里需要修改URL就好。

 

苹果官方文档介绍

 

posted @ 2019-09-06 14:40  新年新气象  阅读(5338)  评论(0编辑  收藏  举报