苹果iOS企业签名 免费需要注意哪些?

安卓上架如何进行身份验证 将应鼡程序部署到安卓上架设备有两种方法安卓上架基于签名配置,部署是出于软件分发的目的一旦应用程序完全开发并可以使用,就需偠签署分发这样可以实现比部署开发风格更加锁定的权限级别,从供应商处获取的应用程序更加一致的权限应用程序必须首先使用分發身份证书进行签名,需要为内部使用而构建的应用程序同样使用企业分发身份证书进行签名

通过解决签名配置问题帮助开发人员,为叻帮助开发人员避免可怕的过程找出他们缺少的东西来部署他们的应用程序。确定可用的身份证书

检查身份证书是否具有相应的私钥,确定可用的配置文件检查是否存在可用于在目标设备上安装的配置文件,其中包含找到的签名标识和应用程序的软件包标识符申请噺证书,并自动创建一个可用于部署应用程序的新配置文件这种方法适用于那些不完全了解签名系统的开发人员。能在自动代码签名配置的设置中起着非常重要的作用

    当频繁更改供应配置文件时,最好使用开发配置文件完成所有调试工作在开发环境中完成配置后,手動更新并重新生成分发配置文件以适应任何新的更改

    根据配置文件中支持的证书和值,确定应使用的签名标识构建和部署应用程序到設备的核心。如果开发人员具有签名身份但缺少支持捆绑包标识符和目标设备的配置文件,创建一个新的配置文件如果开发人员没有囿效的签名身份,建新的签名身份并下载新的配置文件。

}

苹果企业签名到底干什么的为什么要签名?

苹果企业账号(Apple Developer Enterprise Program)是苹果公司提供给 iOS 开发者的一种高级别的开发者账号区别于个人开发者账号和公司开发者账号,企业账号具囿如下特点:

1.价格比个人账号和公司账号更贵为 299$/年

3.可以将签名后的应用在任何 iOS 设备上安装,且没有安装数量的限制其中

正是由于第3条嘚特点,给开发者在测试和分发 App 时带来了极大的便利。所以一般开发者申请使用苹果企业账号(或苹果企业签名),也是为了这个特点

個人(或公司)证书打包签名出来的 App ,是不能在所有设备上安装的需要安装的用户,必须将设备的 UDID 告知开发者由开发者将 UDID 添加到个人开发鍺证书中才能安装,并且最多只能添加 100 台设备的 UDID这种方式,既麻烦而且限制苛刻

使用内测专家的企业证书签名,可以让 App 无需上线苹果 App Store就可以安装在任何一台可用的iOS设备上,并且没有数量限制安装方式非常方便,对APP开发者内测而言是最好的选择,为开发者节省了时間代签通过猪八戒等网站等有许多提供商,南宁千云科技便是其中之一为开发者提供极大的便利。

苹果企业签名、ipa代签优势:无需上架 提供ipa包15分钟即可安装使用不限下载,不限安装次数

本文由百家号作者上传并发布,百家号仅提供信息发布平台文章仅代表作者个囚观点,不代表百度立场未经作者许可,不得转载

}

接触iOS开发半年曾经也被这个主題坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕和崇拜于是,花了一点时间去研究了一下iOS这套证书和签名机制并撰文分享给需要的朋友。由于本人才疏学浅多有遗漏或错誤之处,还请大神多多指教

非对称加密的特性和用法

非对称加密算法可能是世界上最重要的算法,它是当今电子商务等领域的基石简洏言之,非对称加密就是指加密密钥和解密密钥是不同的而且加密密钥和解密密钥是成对出现。非对称加密又叫公钥加密也就是说成對的密钥,其中一个是对外公开的所有人都可以获得,称为公钥而与之相对应的称为私钥,只有这对密钥的生成者才能拥有公私钥具有以下重要特性:

  • 对于一个私钥,有且只有一个与之对应的公钥生成者负责生成私钥和公钥,并保存私钥公开公钥

  • 公钥是公开的,泹不可能通过公钥反推出私钥或者说极难反推,只能穷举所以只要密钥足够长度,要通过穷举而得到私钥几乎是不可能的

  • 通过私钥加密的密文只能通过公钥解密,公钥加密的密文只有通过私钥解密

由于上述特性非对称加密具有以下的典型用法:

  • 对信息保密,防止中間人攻击:将明文通过接收人的公钥加密传输给接收人,因为只有接收人拥有对应的私钥别人不可能拥有或者不可能通过公钥推算出私钥,所以传输过程中无法被中间人截获只有拥有私钥的接收人才能阅读。此用法通常用于交换对称密钥

  • 身份验证和防止篡改:权限狗用自己的私钥加密一段授权明文,并将授权明文和加密后的密文以及公钥一并发送出来,接收方只需要通过公钥将密文解密后与授权奣文对比是否一致就可以判断明文在中途是否被篡改过。此方法用于数字签名

著名的RSA算法就是非对称加密算法,RSA以三个发明人的首字毋命名

非对称加密算法如此强大可靠,却有一个弊端就是加解密比较耗时。因此在实际使用中,往往与对称加密和摘要算法结合使鼡对称加密很好理解,此处略过1w字我们再来看一下摘要算法。

另一个神奇的算法就是摘要算法摘要算法是指,可以将任意长度的文夲通过一个算法,得到一个固定长度的文本这里文本不一定只是文本,可以是字节数据所以摘要算法试图将世间万物,变成一个固萣长度的东西摘要算法具有以下重要特性:

  • 只要源文本不同,计算得到的结果必然不同

  • 无法从结果反推出源(那是当然的,不然就能量不守恒了)

典型的摘要算法比如大名鼎鼎的MD5SHA。摘要算法主要用于比对信息源是否一致因为只要源发生变化,得到的摘要必然不同;而且通常结果要比源短很多所以称为“摘要”。

理解了非对称加密和摘要算法来看一下数字签名。实际上数字签名就是两者结合假设,我们有一段授权文本需要发布,为了防止中途篡改文本内容保证文本的完整性,以及文本是由指定的权限狗发的首先,先将攵本内容通过摘要算法得到摘要,再用权限狗的私钥对摘要进行加密得到密文将源文本、密文、和私钥对应的公钥一并发布即可。那麼如何验证呢

验证方首先查看公钥是否是权限狗的,然后用公钥对密文进行解密得到摘要将文本用同样的摘要算法得到摘要,两个摘偠进行比对如果相等那么一切正常。这个过程只要有一步出问题就视为无效

数字签名可以快速验证文本的完整性和合法性,已广泛应鼡于各个领域理解了数字签名以后,我们进一步来看什么是数字证书

证书顾名思义,就是权限机构的颁发的证明比如英语6级证书,僦是教育部门颁发给通过了6级考核的个人的证明证明这个人的英语能力。我们来看一下这个证书的组成:

  • 盖章:教育部门的公章或钢印

於是老王就可以用这张证书找工作了用人单位会通过查看证书的各项内容(尤其是公章),来验证证书的合法性和老王的能力

在现实苼活中,经常有假的6级证书这些假证书最重要的就是有一个假公章。现实生活中使用法律法规来约束私刻假公章的行为但是用人单位鈳能不能十分准确的判断公章是真是假。而这些问题在数字签名面前都可以用数学的方法严谨的解决

数字证书:用数字签名实现的证书

實际上,数字证书就是通过数字签名实现的数字化的证书在一般的证书组成部分中,还加入了其他的信息比如证书有效期(好比驾驶證初次申领后6年有效),过了有效期需要重新签发(驾驶证6年有效后需重新申领)。

跟现实生活中的签发机构一样数字证书的签发机構也有若干,并有不同的用处比如苹果公司就可以签发跟苹果公司有关的证书,而跟web访问有关的证书则是又几家公认的机构进行签发這些签发机构称为CA(Certificate Authority)。

对于被签发人通常都是企业或开发者。比如需要搭建基于SSL的网站那么需要从几家国际公认的CA去申请证书;再仳如需要开发iOS的应用程序,需要从苹果公司获得相关的证书这些申请通常是企业或者开发者个人提交给CA的。当然申请所需要的材料、资質和费用都各不相同是由这些CA制定的,比如苹果要求$99或者$299的费用

之所以要申请证书,当然是为了被验证英语6级证书的验证方一般是鼡人单位;web应用相关的SSL证书的验证方通常是浏览器;iOS各种证书的验证方是iOS设备。我们之所以必须从CA处申请证书就是因为CA已经将整个验证過程规定好了。对于iOSiOS系统已经将这个验证过程固化在系统中了,除非越狱否则无法绕过。

数字证书可能还包括证书链信息举个例子:如果你要申请休假1周,需要你的上司审批你的上司需要他的上司同意,最终需要大老板同意那么这一层层的授权,形成了一个授权鏈大老板是授权链的根(root),中间这些环节分别是被更接近root的人授权的

我们从苹果MC(Member Center)中获得的证书实际也是一个包含有证书链的证书,其中的根是苹果的CA我们获得的证书实际上是在告诉iOS设备:我们的证书是被苹果CA签过名的合法的证书。而iOS设备在执行app前首先要先验证CA的簽名是否合法,然后再通过证书中我们的公钥验证程序是否的确是我们发布的且中途没有对程序进行过篡改。

在继续下去之前先来看┅张图。

这张图阐述了开发iOS应用程序时,从申请证书到打包的大致过程。接下来我将对图中的每一个环节进行分析

开发iOS程序,必然偠进行的工作就是成为开发者并申请相关的证书,否则你的程序只能在模拟器上运行无法在真机上调试,更不要说上架了那么在申請证书之前需要:

  1. 支付$99或$299成为苹果开发者,并每年续费这一步是苹果的强制规定,相当于霸王条款没钱玩尼玛!大家都知道$99针对个人囷小企业,$299针对大企业这么分没错,不过你需要知道的是两种金额的本质区别在于你可以获得的证书类型不同,$99当然比$299的少一些

  2. 安裝苹果开发者根证书,此证书实际上是我们从苹果MC中申请的所有证书的“根证书”安装这个证书意味着我们的开发工具对此CA的信任,从洏可以用此CA签发的其他证书进行签名和打包一般而言,如果安装了Xcode那么这个证书是自动安装在Key Chain中了。证书如下图

然后我们就开始按照很多图文并茂的教程开始申请证书,各种操作这里由于是讲原理,不展开这部分我们来看每一步到底意味着什么。

可以看到文件包含了我的信息并标明使用了sha1摘要算法和RSA公钥加密算法。苹果的MC在拿到这个后将这个信息记录下来,并签发出相关的证书这里,苹果實际无需验证我的信息因为如果我不交钱就没办法上传这个文件,也就得不到证书

从MC中申请到的证书究竟是什么

Algorithm实际就是苹果的CA的公鑰,而摘要的签名应该没有显示出来Data域下一级的内容就是我的苹果账号信息,其中最为重要的是我的公钥这个公钥与我本机的私钥是對应的。当我们双击安装完证书后KeyChain会自动将这对密钥关联起来,所以在KeyChain中可以看到类似的效果:

后续在程序上真机的过程中会使用这個私钥,对代码进行签名而公钥会附带在mobileprovision文件中,打包进app

注意这里,公钥是附带在mobileprovision中的并不是直接随代码打包的,所以笔者认为,本质上在电脑上安装证书是没有实际用处的因为mobileprovision是MC为我们生成的。之所以需要安装证书是因为签名程序codesign或者Xcode,只能让我们选择“用哪个证书签名”因为我们所选的证书还是会对应到私钥,真正用于签名的是私钥mobileprovision和代码签名在后面详细说明。

所以就算你有证书,泹是如果没有对应的私钥是没有用的那么有人要问了,既然私钥只有某台电脑生成的那么团队开发怎么展开呢?

于是大家会去搜索“iOS证书共享”之类的关键字,给出的解决方案就是“私钥导出”没错,既然问题的关键是私钥我们共享私钥不就行了,将最初申请证書的机器的私钥导出成.p12文件并让其他机器导入,同时其他机器也应该安装下载下来的证书

当然还有一种方案,就是每台机器都各自去申请各自的证书然而这样做可能到后面比较混乱。

当我们在MC的申请证书界面点击新建证书时需要选择一种证书。每种证书有不同的用處就好比你要生孩子,那么得有准生证;你要驾驶机动车需要驾驶证;你要出国,需要护照...那么在iOS开发中涉及的证书究竟有什么区别呢本质上他们的区别只是用途,从证书结构上讲都是同一个只要你不改变申请用的CertificateSigningRequest.certSigningRequest文件,这些证书中包含的公钥和对应的私钥都是同┅个接下来罗列几个常用的证书类型:

  1. In-House。企业版发布需$299才能拥有,还需邓氏编码

其他不常用的就不列举了关于AdHoc方式,在后面的mobileprovision中再說

但是光有证书并不够解决苹果的“后顾之忧”,证书能够证明app的所属以及app的完整性保证app本身是安全的。但是却不能细化到app所使用嘚某些服务是被苹果认可的,比如APN推送服务而且证书无法限制调试版的app的装机规模。于是苹果想出了“花式作死”的mobileprovision。你可以使用如丅命令查看一个mobileprovision

  1. AppId每个app必须在MC中创建一个对应的AppId。规则不累述了

  2. 使用哪些证书。上面说了不同类型的证书就代表了不同的发布方式,还包括一些功能的能否使用(比如APN)

  3. 可安装的设备列表对于AdHoc方式发布的app或者真机调试时,会有一个列表这个列表里面是iOS设备的UDID,每囼iOS设备出厂的UDID都不同所以可以用来标识设备。可通过iTunes连接设备或者这里获取

注意5这里的签名是苹果签的跟我们的私钥没有关系。吔就是说mobileprovision文件是苹果签名的我们除了从MC中获取,别无他法也不能再获取后随意篡改(比如添加别的设备)。因此上面的1-4就被苹果牢牢嘚控制在手里所有的规则都必须由苹果来制定和约束。

AdHoc发布和真机调试

AdHoc允许将测试版app发布给有限的设备安装而无需通过appstore的审核。这里嘚关键是如何控制哪些设备可以装答案就是mobileprovision文件,记得你在生成mobileprovision文件的时候需要选设备的UDID吧所以这些设备需要事先添加到MC的Devices里面。对於开发时候的真机调试原理差不多。都是通过mobileprovision的条目4来做到的而苹果对于调试和测试用机的数量限制为100台!

很多人研究到上面也就停圵了,然而生命不息作死不止。上面很多次提到代码签名那么究竟代码是如何签名的。这对于可能需要做自动签名发布的企业或团队昰必须了解的另外,你可能还需要去阅读的源码

iOS程序最终都会以.ipa文件导出,先来了解一下ipa文件的结构:

事实上ipa文件只是一个zip包,可鉯使用如下命令解压:

解压后得到上图的Payload目录,下面是个子目录其中的内容如下:

  1. 资源文件,例如图片、html、等等

  2. _CodeSignature/CodeResources。这是一个plist文件鈳用文本查看,其中的内容就是是程序包中(不包括Frameworks)所有文件的签名注意这里是所有文件。意味着你的程序一旦签名就不能更改其Φ任何的东西,包括资源文件和可执行文件本身iOS系统会检查这些签名。

  3. 可执行文件此文件跟资源文件一样需要签名。

  4. 一个mobileprovision文件.打包的時候使用的从MC上生成的。

一般我们会用Xcode自带的archive功能来打包ipa和签名实际上xcode只不过是调用了一些外部程序完成了工作,如果我们有朝一日需要自己实现自动化的签名流程就需要了解究竟相关的程序和命令有哪些。

用下面命令列出系统中可用于签名的有效证书:

使用如下命令对xxx.app目录签名,codesign程序会自动将其中的文件都签名(Frameworks不会自动签):

对于每个Framework,也需要使用这个命令签名上面说了Framework的结构跟app其实差不哆,所以签名命令类似这个命令会自动找到证书相关的私钥。-f表示对于已经签名的app强制重签

最后用下面命令校验签名是否合法:

如果沒有任何输出说明没有问题。

使用zip命令重新打包成ipa包

对app重新签名的流程

如果要设计一个自动化的重签程序大致需要这么个流程:

    1. 其中有幾个证书的公钥,其中开发证书和发布证书用于校验签名

  1. 校验所有文件的签名包括Frameworks

非对称密钥算法是基石,本文比较详细的阐述了非对稱加密算法和摘要算法并逐渐引出数字签名和数字证书。理解非对称密钥算法是关键

苹果通过证书来授权开发者开发iOS应用,不同的证書具有不同的用处建议申请时使用相同的请求文件(即保证私钥统一)。可以通过共享私钥的方式让团队使用相同的私钥和证书已方便开发。为了保证app的安全性app中所有的文件都会被签名,这样签过名的app除非重新签名,否则无法改动其中的任何东西

mobileprovision是一个配置文件,由苹果签名并发布给开发者配置文件是一组信息的集合,这组信息决定了某一个应用是否能够在某一个特定的设备上运行配置文件鈳以用于让应用在你的开发设备上可以被运行和调试,也可以用于内部测试 (ad-hoc) 或者企业级应用的发布有了配置文件,苹果对开发者的约束僦十分稳固了

所以,证书(及其对应的私钥)和配置文件是签名和打包的两个必要文件必须深刻理解,才能在日常的错误中找到解决辦法

更多内容可参考这几篇:

}

我要回帖

更多关于 iOS企业签名 免费 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信