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,各种小平台等等

  • 相关阅读:
    串行化数据读取类(WebService下DataSet的高性能替代类)源代码
    如何在Access2007中打开加密的Access2003数据库
    业务流程不是需求(ZT)
    XML文件的DOCTYPE定义(转)
    别让Hibernate偷走了您的身份(转)
    有关Struts标签<html:cancel>使用的一点提示
    Silverlight下实现Windows8风格的进度条
    DotNetMock单元测试的利器
    进入ubuntu终端的快捷键
    花生壳域名建站,内网能访问,外网不能访问的解决办法
  • 原文地址:https://www.cnblogs.com/mapboo/p/13766742.html
Copyright © 2011-2022 走看看