zoukankan      html  css  js  c++  java
  • 苹果企业证书签名和超级签名

    苹果企业证书签名

    特点总结

    1、随时可分发APP

    2、可接受Apple不可接受的APP

    缺点总结

    1、苹果开发者账号难求,据说最近炒到了50万左右

    2、市场上证书混乱,烂大街的证书不少

    3、掉签风险极高

    4、掉签后重新获取用户,运营成本加大

    重签名方法

    工具

    1、iOS APP Signer

    2、iReSign

    3、风车签名管理(其它不安全,可能会有盗取账号风险,特别是需要P12密码的)

    终端签名

    1、准备IPA后缀文件(Ad Hoc Deployment 打包)xx.mobileprovision文件(企业)

    2、获取证书里面的信息(xx.plist)

    security cms -D -i xx.mobileprovision > xx.plist

    3、导出xx.plist

    /usr/libexec/PlistBuddy -x -c 'Print:xx项目名'  xx.plist > xx.plist

    4、解压ipa包

    unzip xx.ipa

    5、删除旧签名

    rm -rf Payload/xx.app/_CodeSignature/

    6、删除动态库签名(所有framework都有需要执行此步骤)

    ①、删除签名rm -rf Payload/xx.app/Frameworks/xx.framework/_CodeSignature②、重新签名codesign -f -s "证书的名称" Payload/xx.app/Frameworks/xx.framework/

    7、替换配置文件

    cp xx.mobileprovision Payload/xx.app/

    8、签名

    codesign -f -s "证书的名称" --entitlements xx.plist Payload/xx.app

    9、打包成ipa

    zip-r new_xx.ipaPayload/

    最终 new_xx.ipa就是重新签名的文件

    苹果超级签名

    原理

    说的明白一些,开发者可以在开发者后台添加手机的UDID,然后重新打包一个IPA文件,分发平台,然后被添加的UDID就可以下载

    整体架构图

     

    图1

    特点总结

    1、直接分发,安装即可运行,不需要用户做企业证书的信任操作

    2、目前稳定,不会有证书吊销导致的业务风险

    缺点总结

    1、单开发者账号的iPhone设备数量只有100个,导致分发成本非常高(99美元/1年/100个设备)

    XML制作细节

    1、在你的Web服务器上创建一个.mobileconfig的XML格式的描述文件;

    XML代码如下

    <?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"><plistversion="1.0"><dict><key>PayloadContent</key><dict><key>URL</key><string>一个接收UDID的网址</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>GuangdongQi</string><!--组织名称--><key>PayloadDisplayName</key><string>AppFree</string><key>PayloadVersion</key><integer>1</integer><key>PayloadUUID</key><string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string><!--自己随机填写的唯一字符串,http://www.guidgen.com/ 可以生成--><key>PayloadIdentifier</key><string>com.gpon.profile-service</string><key>PayloadDescription</key><string>This temporary profile will be used to find and display your current device's UDID.</string><key>PayloadType</key><string>Profile Service</string></dict></plist>

    注意

    ①、接收网址的地址需要SSL签名,自签名的不行,这也是苹果强制https的一种方式吧

    ②、mobileconfig下载时设置文件内容类型Content Type为:application/x-apple-aspen-config(遇到问题的都是因为这个),或者像这里用一个简单页面做好下载mobileconfig文件,引导用户安装

    2、服务器做一些301跳转,存储UDID等操作

    自动化

    注册新的开发者设备+更新Provisioning Profile

    接下来的关键点就是如何在获取到用户的UDID之后,秒级完成注册新的开发者设备+更新Provisioning Profile的。 这里我们需要借助开源工具(spaceship):

     

    Spaceship

    Spaceship公开了Apple Developer Center的API,而且执行速度比解析开发者Web页面快两个数量级,从而在非常短的时间内搞定Provisioning Profile。 这个框架解决了整套机制的关键问题,成为整个工具链的基石。其实某平台早就完成了UDID获取和应用签名分发的技术储备,只差这套API。

    下面是解析开发者Web页面和直接访问API的速度对比图:

     

    SpaceshipRecording

    自动签名封包

    此处其实应该有一万个解决方案,通过命令行脚本/Python脚本/或者其他第三方都能实现。

    这里推荐使用Sigh这个框架来解决这个问题。

     

    image.png

    Sigh的用法和配置都非常简单,一个纯命令工具,丰富的配置选项(自行查阅文档),活跃的社区,完全够用了。

    直接上演示图:

     

    image

    分发

    不多说了,什么蒲公英,fir,各种小平台等等

  • 相关阅读:
    Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. ......
    UVA 1597 Searching the Web
    UVA 1596 Bug Hunt
    UVA 230 Borrowers
    UVA 221 Urban Elevations
    UVA 814 The Letter Carrier's Rounds
    UVA 207 PGA Tour Prize Money
    UVA 1592 Database
    UVA 540 Team Queue
    UVA 12096 The SetStack Computer
  • 原文地址:https://www.cnblogs.com/mapboo/p/13766742.html
Copyright © 2011-2022 走看看