
正文
ios开发者签名,ios签名源码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
iOS 应用签名证书的类型说明
iOS 应用的证书选择
对于一个未上线 App Store 的应用,一般来说,开发者如果需要将应用安装到某些用户的设备上,就需要将应用导出为这些设备可以直接安装的安装包(.ipa文件),安装包能否正确导出,是决定了应用能否被正确安装到设备上的关键因素。其中,最关键的一个因素是,导出安装包时,应用所使用的证书(即:签名方式)。
开发者可以选择如下两种方式的证书签名方式,来导出应用安装包:
其中,具体使用哪种方式,取决于开发者拥有苹果开发者账号的类型。例如,如果开发者拥有的是苹果个人开发者账号,则可以使用 Ad-hoc 方式;如果拥有的是苹果企业开发者账号,则可以使用 In-house 方式。关于苹果开发者账号支持的证书类型,请见下表:
到目前为止,苹果为 iOS 应用共提供了三种类型的证书签名方式,每一种都有独特的用途。这三种分别是:
蒲公英会根据打包证书的不同,分别显示为 内测版 、 企业版 、 App-Store版 。
关于这三种类型的证书,区别如下表所示:
相关问答
Q1: 苹果iOS超级签名不会掉签是什么原理?是否真的不会掉签?
在使用ios系统的设备时,如果自己需要从App Store以外的环境安装APP,都需要手动对该APP进行信任,才能在自己的设备上正常使用,而且经常在用了一段时间后,APP会发生无法打开、闪退、出现受限等情况。其实,这是因为该APP的企业签名掉签的缘故。而另一种签名方式,也就是ios超级签名算是个人的签名,无需用户进行信任操作,这一点与企业签名有很大不同,使得在这种签名下的APP只要安装了就能用,并且十分稳定。但,这种签名并不是说真的不会掉签。
一、超级签名不会掉签的原理
ios超级签名的原理很简单,就是使用了苹果开发者个人账号实现的ios自动化签名,简单来说就是将苹果设备UDID进行添加然后打包进行真机测试。此外,由于这种签名是直接进行分发的,本身不用提供UDID,也无需上架App Store,更不用手动信任和提供账号来加以下载。也就是说,该签名在ios系统中的级别很高,所以该签名的APP比企业签名的APP更加稳定。
二、超级签名具有时效性,也有数量限制
虽然说ios超级签名确实比较稳定,但并不是说超级签名就是万能的,因为超级签名具有时效性,如果到期后该签名依然会失效,用户也无法再打开APP。一般来说,签名到期时间都是根据提供签名的账号本身到期时间来决定的,通常情况下是一年。所以说,超级签名的APP基本上每年都要重新下载一次,更换新的签名,并不是永久不会掉签,只是再继续签比较容易罢了。此外,超级签名也对有设备数量限制,一般来说,每个开发者账号可以给100台设备进行签名。
总的来说,ios超级签名与企业签名有本质上的不同,所以它相较于企业签名更稳定,但并不是真的不会掉签。
Q2: 苹果软件签名证书是什么?
苹果使用的用户越来越多,现在苹果APP的签名业务也逐渐成熟,苹果签名可以解决APP上架问题,上架APP非常的漫长并且非常的严格,苹果软件目前唯一官方下载渠道就是App Store,但是App Store审核很严格,很多软件因为各种各样的原因无法成功上架,这时,就会使用苹果签名,简单来说,苹果签名就是让软件可以不上架App Store,不通过苹果审核,直接安装在苹果手机上的方法。(E86)签名满足了这一需求。
简单的说
就是手机上有很多第三方的软件
有些是通过手机官方认证的
就是说大软件公司做出来的软件通过手机生产商认可,对手机的系统没有影响
这样的软件就不用签名
而有很多小软件公司或者个人的软件,就通不过手机生产商的认证,所以手机生产商就会认为这些软件可能对手机有危害,所以不允许你安装的
但是你又很想安装这个软件,所以你就必须签名,换句话说就是安装了这个软件,手机出现什么问题,手机生产商不承担责任
现在很多汉化的软件都需要签名
你明白了么?
Q3: iOS 包签名及重签名
签名相关的命令:
•$security find-identity -v -p codesigning -- 列出钥匙串里可签名的证书
•$security cms -D -i embedded.mobileprovision -- 查看描述文件
•$codesign–fs “证书串” 文件名 -- 强制替换签名
重签步骤:
1.删除插件和带有插件的.app包(比如Watch)
2.对Frameworks里面的库进行重签名
3.给可执行文件 +x(可执行)权限
4.替换描述文件
5.替换BundleID
6.通过授权文件(Entilements)重签.app包
实际操作:
获取破壳的ipa包
获取第三方ipa包
查看ipa包是否已经破壳 》 非上架的都没加壳,无需关注
解压ipa包,进入playload文件夹,找到MachO文件
在终端使用命令otool -l DingTalk | grep crypt,0是已脱壳,大于0是未脱壳(一
般为1)
终端查看本地有效证书
$security find-identity -v -p codesigning
删除无法签名的插件文件
删除Plugins文件夹和Watch文件夹
对.app文件夹内的Frameworks文件夹中的每一个framework强制重签名
命令:$ codesign -fs "iPhone Developer: xxx " xxx.framework
找到framework文件夹下所有.framework,分别使用上面的命令对其签名。
建议通过脚本命令执行:
将要签名的描述文件该成 embedded.mobileprovision 替换 来的 embedded.mobileprovision
创建entitlements.plist文件
查看描述文件内容,使用命令security cms -D -I embedded.mobileprovision,找到Entitlements节点,接着创建entitlements.plist文件,内容拷贝过去,最后把entitlements.plist文件拷贝到playload文件夹内(与xx.app同级)。
!]( )
修改xx.app包里面的info.plist中的bundleId为上面项目的bundleId
对xx.app开始签名
使用的命令: zip –ry 输出文件 输入文件 命令。也可以手动压缩。
将上述操作 通过shell命令 写个脚本文件。然后一键操作。
shell脚本语言命令
地址:
蒲公英平台重签名
本文章主要介绍iOS 版本发布的两个相关功能。
一 : iOS 开发出的版本发布安装 用两种方式 :
软件环境
Mac: v10.12.6 (16G29)
ruby: v2.3.4
rvm: v1.29.3
sigh: v2.71.1
Xcode: v9.2
使用sigh脚本
使用之前先安装一下脚本环境
应用场景:
主要解决因重复打包导致测试同学回归测试的包和上传App Store的包不一致的问题。以及 合作方之间 证书不一致,需要重新签名问题。
App开发测试流程
对回归测试通过的ipa包进行重新签名,然后上传 App Store
输入的 Signing Identity 如果和 .mobileprovision文件 不一致,那么终端上仍会提示resign成功,但是,安装时会报错!
codesign -vv -d xxx.app
本文主要讲述sigh命令的安装和使用。
首先确保你安装了Xcode的命令行工具。
然后通过gem安装sigh,gem的安装请自行谷歌。
在终端执行
依次执行下列步骤:
关于更多sigh用法请访问 sigh使用
签名成功的应用就可以顺利在我们的设备中安装了并使用了,用这个方法可以进行非越狱平台安装在正版基础移植的越狱应用。
工具:
借鉴:
iOS APP签名机制详解







