iOS蒲公英超级签名原理理

释放双眼,带上耳机,听听看~!

蒲公英超级签名原理理(⼿手动做超级签名) 由于苹果的⽇日益欺压,苹果的企业证书掉签是越来越密集,所以由此诞⽣生了了⿊黑科技,即所谓的超级 签名

 

 

 

据说某分发平台价格表,来源⽹网络,本⼈人对图⽚片真实性不不负责

签名原理理

签名原理理简单点说使⽤用了了苹果提供给开发者的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写法

<!–参考:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ConfigurationProfileExamples/ConfigurationProfileExamples.html–>

<?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://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>

 

获取设备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上传到⾃自⼰己搭建的服务器器,这个⼿手机⽤用就可以⽤用了了

人已赞赏
iOS文章

iOSUIView中间透明周围半透明(四种方法)

2020-3-5 16:13:58

iOS文章

iOS开发NSString+Addition

2020-3-5 18:14:21

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索