使用Safari浏览器取udid && 描述文件(mobileconfig)签名

最近公司的项目需要取设备udid,首先想到的就是描述文件获取方式。

具体步骤:

1.安装描述文件
2.苹果回调

首先要生成描述文件,这里直接用的网上的方法(感谢天狐大神博客

<?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>https://dev.skyfox.org/udid/receive.php</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>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>dev.skyfox.profile-service</string>
        <key>PayloadDescription</key>
        <string>本文件仅用来获取设备ID</string>   <!--描述-->
        <key>PayloadType</key>
        <string>Profile Service</string>
    </dict>
</plist>

上述URL中,要填写自己的回调地址,比如我的:https://www.liuyangge.com/udid/receive.php

将上述数据保存成 .mobileconfig文件即可。安装过程就是下载此文件,在此就不在概述。

安装成功后,苹果会打开回调页面,将设备的一些信息,通过xml形式回传,回传过来的数据是签名过的,具体怎么验签,还在研究。样本数据为剔除掉签名字串后的数据:

<?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>IMEI</key>
    <string>35 485009 682305 9</string>
    <key>PRODUCT</key>
    <string>iPhone10,3</string>
    <key>UDID</key>
    <string>cada21aaa8ad057b3c718e73b8d8aba2871ac46d</string>
    <key>VERSION</key>
    <string>16G77</string>
</dict>
</plist>

将xml格式化后,自己处理数据即可。

现在我们安装描述文件时,会提示红色的未签名

未签名

已签名的文件会显示绿色已验证的标志

已验证

网上查阅资料时,发现这个有两种方式可以进行签名。

第一种可以用苹果开发者钥匙串证书进行签名
第二种使用SSL证书进行签名

我目前使用的是第二种方式。

这里以阿里云免费SSL证书为例(letsencrypt免费证书同理)

先去阿里云申请免费ssl证书(地址:https://common-buy.aliyun.com/?commodityCode=cas&aly_as=kWqNXneS#/buy
选择免费型DV SSL证书

付款后证书申请,填好资料后等待证书下发(一般5-10分钟内即可下发成功)

下发好后,点击下载证书,选择其他

解开压缩包后,会有一个pem文件,一个key文件

将上面两个文件 和 .mobileconfig文件放在一起,开始签名

命令:openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer 1.pem -inkey 2.key -certfile ca-1.pem -outform der -nodetach

执行命令后,会生成一个signed.mobileconfig,这就是签名后的文件了。

下载签名后的signed.mobileconfig 看看是不是显示绿色的已验证。

详情里记录着回调URL,和证书信息

至此,大功告成。

刘杨哥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • © 2014-2018 liuyangge.com 版权所有 ICP证:津ICP备15004811号-1
  • 联系邮箱:1009856694@qq.com