服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS 超级签名之描述文件的实现过程

iOS 超级签名之描述文件的实现过程

2021-05-28 16:47GarveyCalvin IOS

这篇文章主要介绍了iOS 超级签名实现之描述文件的实现过程,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

简介

因为最近企业签掉得太严重了,上头要求实现超级签进行游戏下载。故有了此文章,记录一下过程。

签名原理其实很简单,超级签名的技术就是使用个人开发者账号,将用户的设备当作开发设备进行应用分发。这也导致成本非常高,一个开发者账号最多只能注册一百台设备,然而一个账号的价格为99美元。不过目前超级签分发的应用稳定性很高,不用再像企业签那样经常掉签。

新建 .mobileconfig 描述文件

该描述文件用于获取用户设备的UDID,用户通过某个点击操作下载此文件,安装后服务器会收到该用户设备的 UDID 回调事件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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>

注册开发者设备及签名包体

由于时间太赶,这里注册开发者设备及签名包体采用的都是三方提供的服务,因此没有细节提供,但是怎样去做还是可以说一下的。

我们可以借助Spaceship工具完成注册新的开发者设备和更新Provisioning Profile,签名包体可以用Sigh框架,具体实现请自行搜索。

最后用户下载的方式与企业签的一样,使用itms-services协议进行下载。

ssl 签名 .mobileconfig 配置文件

我看了很多文章,都是用开发者证书去签名的,可是我弄了好久,死活从“未签名”变成了“”尚未验证“,当时一度绝望了好长时间。从 iPhone 配置实用工具 2.2 到 iPhone 配置实用工具 3.5,皆不成功。

配置文件是可以使用的,虽然说安装时会提示红色字“尚未验证”,看起来不太安全之外,一切安好。可是要有追求啊,别人能做到的东西,那就是肯定能做的。

ssl 证书签名配置文件是知道的,可是向后端人员要证书文件的时候一度受到了困扰,所以前期搁置了好久,直到其它的方法都被我试过了,都不行之后,只好继续调研 ssl 证书签名配置文件。

踩完无数的坑之后,这里介绍一种亲测可用的方法,使用 ssl 证书进行配置文件的签名。我是看这篇文章实现的为iOS的mobileconfig配置文件进行签名

很简单,需要三个文件,三行命令,完成。

?
1
2
3
$ 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。

当执行第三步后,会自动跳转至描述文件。

参考文献

Create GUIDs online

SSL Converter - Convert SSL Certificates to different formats

mobileconfig文件的签名和认证(signed、verified)

iOS超级签名

通过Safari浏览器获取iOS设备UDID(设备唯一标识符)

总结

以上所述是小编给大家介绍的iOS 超级签名实现之描述文件的实现过程,希望对大家有所帮助,也非常感谢大家对服务器之家网站的支持!

原文链接:https://www.cnblogs.com/GarveyCalvin/p/ios-super-sign.html

延伸 · 阅读

精彩推荐
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01