仿蒲公英超级签名原理/vip签名,无需mac服务器,史上最详细

1,078 阅读3分钟

由于近段时间政策变动,企业证书不断被封停。

市场上开发出一种新的签名方式,超级签名。

超级签名

签名原理

签名原理简单点说使用了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设备进行分发。

既然签名用是 Ad-Hoc ,那么 Ad-Hoc 所具有的优劣势也一并继承了下来:

优势:

直接分发,安装即可运行,不需要用户做企业证书的信任操作 目前稳定,不会有证书吊销导致的业务风险(后续苹果政策风险非常高)

缺点:

单开发者账号的iPhone设备数量只有100个,导致分发成本非常高(99美元/1年/100个设备) 开发者账号需要预先写入安装设备的UDID,在工具链不通的情况下,获取用户的UDID相对困难和繁琐,而且手动写入UDID不存在商用可行性,当然目前这个缺点被解决了

整体架构

接下来我们就看看整套机制是如何进行的:

1.设备安装描述文件后,会向服务器发送设备的UDID。2.服务器收到UDID后,将UDID注册到某个开发者账号下。3.再生成签名用的描述文件,给IPA签名。4.然后iPA传Server,使用itms-services方式让用户下载。

技术细节

1,获得用户UDID

苹果允许用户通过浏览器安装配置文件,来上传UDID到服务器。

服务器需返回301重定向到特定网站

.mobileConfig 文件实例:

获得udid 服务端接受UDID需要返回301,示例代码:

2,解析苹果给出的XML文件,并取得对应数据

解析XML并返回 在这个时候,服务器就已经有了用户的udid了。

3,开发者中心更新UDID。

这里用到的框架是fastlane。框架使用起来简单易用。

调用实例代码:

更新UDID 更新完成UDID后,从苹果商店下载相关证书,并准备重签名。

4,重签名

看了很多文章,都是使用Isign来完成应用重签名。但是这种机制只能运行在mac电脑上。 mac服务器成本昂贵。要支持高并发成本非常高。

在这里,我们使用p12证书来实现在linux服务器上也能重签名。

首先我们要先将cer文件和csr文件转换为p12文件。

实例代码:

转换P12文件 转换完P12文件后,可以通过重签名脚本完成应用重签名。

实例代码:

重签名 到此时,我们的重签名流程就已经完成了。

然后将ipa包上传到OSS服务上,并配置itms-service服务来做分发。

itms-service服务代码实例:

itms-service服务文件

效果图:

效果图

效果图

相关三方库:

获取设备UDID的第三方库

github.com/shaojiankui…

Apple Developer Center 自动化工具:

github.com/fastlane/fa…

OTA 分发应用工具:

github.com/atelierdumo…