简介
由于最近企业签掉得太严重了,上头要求实现超级签进行游戏下载。故有了此文章,记录一下过程。html
签名原理其实很简单,超级签名的技术就是使用我的开发者帐号,将用户的设备看成开发设备进行应用分发。这也致使成本很是高,一个开发者帐号最多只能注册一百台设备,然而一个帐号的价格为99美圆。不过目前超级签分发的应用稳定性很高,不用再像企业签那样常常掉签。node
新建 .mobileconfig 描述文件
该描述文件用于获取用户设备的UDID,用户经过某个点击操做下载此文件,安装后服务器会收到该用户设备的 UDID 回调事件。ios
<?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://[你的服务器地址].com/resource/uploadUUID.do</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>xxx.xxx.com</string> <!--组织名称--> <key>PayloadDisplayName</key> <string>查询设备UDID</string> <!--安装时显示的标题--> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadUUID</key> <string>c156f2f8-fc42-4260-8fc5-8644861d8293</string> <!--本身随机填写的惟一字符串,http://www.guidgen.com/ 能够生成--> <key>PayloadIdentifier</key> <string>xxx.xxx.profile-service</string> <key>PayloadDescription</key> <string>本文件仅用来获取设备ID</string> <!--描述--> <key>PayloadType</key> <string>Profile Service</string> </dict> </plist>
注册开发者设备及签名包体
因为时间太赶,这里注册开发者设备及签名包体采用的都是三方提供的服务,所以没有细节提供,可是怎样去作仍是能够说一下的。web
咱们能够借助Spaceship
工具完成注册新的开发者设备和更新Provisioning Profile
,签名包体能够用Sigh
框架,具体实现请自行搜索。后端
最后用户下载的方式与企业签的同样,使用itms-services
协议进行下载。浏览器
ssl 签名 .mobileconfig 配置文件
我看了不少文章,都是用开发者证书去签名的,但是我弄了很久,死活从“未签名”变成了“”还没有验证“,当时一度绝望了好长时间。从 iPhone 配置实用工具 2.2 到 iPhone 配置实用工具 3.5,皆不成功。安全
配置文件是可使用的,虽说安装时会提示红色字“还没有验证”,看起来不太安全以外,一切安好。但是要有追求啊,别人能作到的东西,那就是确定能作的。服务器
ssl 证书签名配置文件是知道的,但是向后端人员要证书文件的时候一度受到了困扰,因此前期搁置了很久,直到其它的方法都被我试过了,都不行以后,只好继续调研 ssl 证书签名配置文件。app
踩完无数的坑以后,这里介绍一种亲测可用的方法,使用 ssl 证书进行配置文件的签名。我是看这篇文章实现的为iOS的mobileconfig配置文件进行签名。框架
很简单,须要三个文件,三行命令,完成。
$ openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer mbaike.crt -inkey mbaike.key -certfile ca-bundle.pem -outform der -nodetach $ 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
这里耗时主要是在等运维人员提供相关证书文件,千万别给错了,不然很难 Debug。
下载描述文件后不能自动跳转到安装界面
在 iOS 12.2 上苹果作了改动,下载完后须要用户手动进行安装。点击 设置 —— 已下载描述文件,会自动弹出描述文件安装界面,点击右上角安装便可。
官方说明点这儿在 iPhone 或 iPad 上安装配置描述文件。
利用 .mobileprovision 跳转到已下载描述文件
这是为了方便用户不需手动找描述文件并安装,能够直接跳过去,省去用户操做。
-
从苹果开发者网站中下载对应的发布描述文件;
-
把发布描述文件部署在服务器;
-
web 访问服务器的发布描述文件,如:
http://***.com/embedded.mobileprovision
; -
Done。
当执行第三步后,会自动跳转至描述文件。
参考文献
SSL Converter - Convert SSL Certificates to different formats
mobileconfig文件的签名和认证(signed、verified)
经过Safari浏览器获取iOS设备UDID(设备惟一标识符)
声明
博文做者:GarveyCalvin
博文出处:http://www.cnblogs.com/GarveyCalvin/ 本文版权归做者和博客园共有,欢迎转载,但须保留此段声明,并给出原文连接,谢谢合做!