蒲公英超级签名原理理(⼿手动做超级签名) 由于苹果的⽇日益欺压,苹果的企业证书掉签是越来越密集,所以由此诞⽣生了了⿊黑科技,即所谓的超级 签名
超级签名安装流程演示
据说某分发平台价格表,来源⽹网络,本⼈人对图⽚片真实性不不负责
签名原理理
签名原理理简单点说使⽤用了了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设备进⾏行行分 发。
既然签名⽤用是 Ad-Hoc ,那么 Ad-Hoc 所具有的优劣势也⼀一并继承了了下来:
优势:
1 直接分发,安装即可运⾏行行,不不需要⽤用户做企业证书的信任操作
2 ⽬目前稳定,不不会有证书吊销导致的业务⻛风险(后续苹果政策⻛风险⾮非常⾼高)
缺点:
单开发者账号的iPhone设备数量量只有100个,导致分发成本⾮非常⾼高(99美元/1年年/100个设备)
开发者账号需要预先写⼊入安装设备的UDID,在⼯工具链不不通的情况下,获取⽤用户的UDID相对困难和 繁琐,⽽而且⼿手动写⼊入UDID不不存在商⽤用可⾏行行性,当然⽬目前这个缺点被解决了了
整体架构
接下来我们就看看整套机制是如何进⾏行行的:
1.设备安装描述⽂文件后,会向服务器器发送设备的UDID。
2.服务器器收到UDID后,将UDID注册到某个开发者账号下。
3.再⽣生成签名⽤用的描述⽂文件,给IPA签名。
4.然后iPA传Server,使⽤用itms-services⽅方式让⽤用户下载。
技术细节
使⽤用配置⽂文件获取UDID
苹果公司允许开发者通过IOS设备和Web服务器器之间的某个操作,来获得IOS设备的UDID(包括其他 的⼀一些参数)。这⾥里里的⼀一个概述:
1.在你的Web服务器器上创建⼀一个.mobileconfig的XML格式的描述⽂文件;
2.⽤用户在所有操作之前必须通过某个点击操作完成.mobileconfig描述⽂文件的安装;
3.服务器器需要的数据,⽐比如:UDID,需要在.mobileconfig描述⽂文件中配置好,以及服务器器接收数据 的URL地址; 4.当⽤用户设备安装描述⽂文件后,设备会回调你设置的URL,如果你的URL返回302跳转的话,Safari 浏览器器会跳转到你所给的地址;
5.mobileconifg写法
获取设备UDID的第三⽅方库
https://github.com/shaojiankui/iOS-UDID-Safari
接下来就是获取到UDID,注册新的开发者设备+更更新Provisioning Profile的 Apple Developer Center ⾃自动化⼯工具: https://github.com/fastlane/fastlane/tree/master/spaceship
⾃自动签名封包⼯工具:
https://github.com/fastlane/fastlane/tree/master/sigh
OTA
分发应⽤用⼯工具:
https://github.com/atelierdumobile/appdeploy
问题分析:
完整流程图
已经全部完善,整套系统做出,智能重签,分发管理,有想购买系统的可以联系我,便宜出售
不不过我不不喜欢这种⼯工具,我使⽤用的是ruby脚本,⽬目前我这边已经到了了获取到UDID,然后创建证书和 udid注册,⼿手动获取到描述证书和distribution.cer,⼿手动重签是可以装上的,
参考资料料
Over-the-Air Profile Delivery Concepts(获取设备UDID官⽅方⽂文档):
https://developer.apple.com/ library/archive/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ OTASecurity/OTASecurity.html
APPLE 开发商计划许可协议:
https://download.developer.apple.com/Documentation/ Apple_Developer_Program_License_Agreement/ Apple_Developer_Program_License_Agreement_20181019_Chinese_Simplified.pdf
已全部实现
第⼀一步 ⽤用户点击信任,获取⽤用户⼿手机的
UDID,回传给服务器器
第⼆二步 服务器器获取到
UDID之后,⽤用脚本加⼊入到苹果开发者账号,并且更更新下profile⽂文件ad hoc的,
然后下载⼀一个embedded.mobileprovision名字的描述⽂文件
第三步 把
embedded.mobileprovision 和 你的ipa包⽤用终端重新签名,命令fastlane sigh resign 拖⼊入ipa包,选择你证书的16进制号,拖⼊入 embedded.mobileprovision ,⽣生成⼀一个新的ipa⽂文件, 第四步 把ipa上传到⾃自⼰己搭建的服务器器,这个⼿手机⽤用就可以⽤用了了