译:阐明iOS证书和provision文件

许多iOS开发人员都会和你说在iOS开发很困惑的问题之一,将app真正运行在真实的设备(iPhone iPad而不是模拟器),因为所有的这些都会涉及从苹果获得证书,甚至那些知道证书的一般流程的,仍会感觉有些奇怪一切是如何运行的,这将是一个长期的过程,但我希望本文将对你有用。
为了更好的理解我们需要去了解这些的理由,你需要谨记这背后最大的原因:
苹果,只有苹果,只允许硬件设备在有限的时间内(develop id 一年的时间)运行指定的软件
是的,这是一个非常严格的规则,很多人不喜欢它,但是苹果用铁腕强制推行,这条规则强制软件使用密码签名,每一次app启动时,系统将检查app,以确保它被苹果和开发者允许运行,通过设备越狱和软件破解,可以绕过这些,但对大多数人这不是一个好选择。
苹果数字签名
如果只有苹果可以运行软件,那开发者如何测试软件?(这是不可能的)简短的答案是苹果只相信符合苹果利益的app,长的答案很长,可以从以下几点开始:
当你注册成为iOS开发者,苹果允许你去申请一个特别的证书,用来以苹果的方式去签名app或者其他,你通过使用keychain创建一个Certificate Signing Request (CSR),当你从“证书中心请求一个证书”(Request a Certificate from a Certificate Authority) 两件事情发生:
1 首先,keychain 将为你自动创建一个公钥和私钥,在keys的目录下,可以看见它们。这些keys是非常重要的:它们用来告诉苹果你是谁,不要丢失这些文件,除非你想重做这些流程,可以做个备份。
2 最后,keychain使用keys创建一个certSigningRequest文件去苹果公司,这些文件包含了你的名字、email、公钥、并且使用私钥签名,从而Apple确保是你创建的。
现在,你要上传CSR给Apple,Apple将确认一切是否正常,然后发给你一个开发者证书(development certificate),你可以下载“developer_identity.cer”文件到你的系统,然后拖到keychain中(双击该文件也可以)。这个新的证书将在“My Certificates”目录中显示,双击它,可以查看它的内容:这是一个简单的证书,由Apple发布,说明Apple相信你是谁,将会在签名app时使用到。
Provisioning Files(配置文件)
你的第一完成了,你有了一个来自Apple的说明你是谁的和签名app的证书,就这样么?不,你的iPod/iPhone仍然不知道它是否可以信任你,这里就需要配置文件登场了。
当你创建了配置文件,你在Provision Portal使用上一步苹果颁发给你的证书,关联了iOS设备,结果就是一个用来记录iOS app的过程(即该app是否开启push功能等这些信息)和一个部署到设备所需要的.provision的文件。下载它,并双击安装,Xcode自动将配置文件添加到Organzier.
你可以在一个工程下有数个配置文件,也可以对所有的app使用一个配置文件。如果你创建一个新app,或者继续开发先前的,一个简单方法是对开发使用一个配置文件。最后,你需要创建一个特别配置文件为每个app,因为AppId添加了在Provision Portal比较该app的设置信息(如是否开启push等)。完成这些,你可以设置AppId提交到app store。
编译App并运行
让我们复习一下,有已经有了用来定义你是谁的公钥和私钥,从Apple颁发的证书说明了它知道你谁,配置文件说明了你的项目可以运行在你的设备上,现在是生成执行文件的时候。
我将不在解释设置Xcode或者Mono Touch去编译app,网上有许多教程。我唯一提醒的是你要使用你的这个证书和配置文件设置编译工具。
当你运行编译的app,所做的是创建一个包含所有你的app需要的文件的目录,如果你右键点击最终的app,选择显示目录下的内容,除了所有正常工程文件和资源,你将发现还有两个东西:
1 实际的配置文件,是你已经配置文件的直接拷贝。
2 一个叫“_CodeSignature”的目录,这个很有趣,里面有一个"CodeResources"的文件,这是一个简单的plist文件,包含了该包内所有其他文件的加密hash值。
当app被安装后,iOS做了很多事情:第一,它确保配置文件(provison file)是由苹果签发的,然后它使用provision key比较每一个真实文件的hash值和在CodeResources下hash值,去确保这些文件从编译开始一直未被该改变,如果有任何问题,app是不会安装的。
最后一次检查发生在当你运行app时,iOS检查app未被改变,你拥有一个与尝试运行app相匹配的配置文件,如果没有,app将crash。
其他部署
Ad-hoc部署工作与上文写的相似,你仍然要注册你的设备,所有的事情都一样。
企业开发有些不一样,当你有一家数千台iPhone使用者的大公司,Apple表现得更喜欢你和信任你多一些,他们给你一个允许你像apple公司一样的重签名的证书,为了所有的iOS设备将自动识别你并且可以运行app,所以你不需要在配置文件里注册设备,除了这一点,其他的都一样。
最终,部署到App Store,像企业部署一样,不需在配置文件里注册设备,不同的是,在从Apple的的的配置文件中的签名不允许你到处运行,你不可以运行app除了在AppStore里,你唯一能做的事就是提交到AppStore等待许可。
当苹果接受到你的App,已经被你签名过并包含配置文件,所以他们知道你是一个提交app的正确的人,并且App是一个应该被许可的,在检查回顾过之后,他们最终用他们自己的可以运行在任何设备的签名重新签名app。
写的这些能在官方文档之外帮助到我,我也希望能帮助到其他人,我希望没有谬误,如果有任何问题,请留言,我将解决它。
原文地址http://escoz.com/blog/demystifying-ios-certificates-and-provisioning-files/
苹果官方部署手册

阐明iOS证书和provision文件相关推荐

  1. iOS证书和描述文件申请

    首先你需要有一个苹果的 开发者帐号,一个 Mac系统. 如果没有开发者账号,可以先申请一个开发者账号,申请流程详见: iOS公司开发者账号申请教程. 如果你已经有了一个IDP,打开 https://d ...

  2. iOS证书和.p12文件

    最近和ios的证书打了一段时间交道,把自己的一点体会分享给大家.      我们的每一个证书都可以生成一个.p12文件,这个文件是一个加密的文件,只要知道其密码,就可以供给所有的mac设备使用,使设备 ...

  3. iOS证书及描述文件制作流程

    此文章来自Apicloud官方网站的教学文章 创建App ID 首先打开苹果开发网站,通过Account进入开发账户,如图: 登录成功后选择Certificates, Identifiers & ...

  4. iOS证书和描述文件申请详情步骤

    因为之前在iOS开发这条道路上吃了很多不必要的亏,特此想把自己的经验分享给大家,对于初学者来讲不是上架App Store购买一个黑苹果是不划算的,简单的内测或者玩玩完全是浪费钱啊(有钱可忽略),特此介 ...

  5. ios证书的申请方法(在线)

    时间来到2021年,大前端是个热门话题,H5框架也是层出不穷,越来越多的H5 APP打包软件出现. 这些打包软件打包,生成ios应用,都需要ios证书和描述文件. 苹果官方提供的方法,申请证书是需要m ...

  6. iOS证书可以删除吗,到期怎么更新

    先介绍下证书类型 很多刚开始接触iOS证书的开发者可能不是很了解iOS证书的类型功能和概念. 下面对iOS证书的几个方面进行介绍. iOS证书的类型和作用 1.iOS开发证书 iOS开发证书是用于测试 ...

  7. IOS证书/私钥/代码签名/描述文件

    http://blog.sina.com.cn/s/blog_65c178a801016yr0.html 转自:百度文档 1.   相关资源 (1)   钥匙串程序(常用工具->钥匙串),用于创 ...

  8. IOS 开发环境,证书和授权文件等详解

    (转自:http://blog.csdn.net/gtncwy/article/details/8617788) 一.成员介绍 1.    Certification(证书) 证书是对电脑开发资格的认 ...

  9. iOS小知识:开发者后台添加新的UDID之后,如何更新自动管理签名证书的设备描述文件(Provisioning Profiles)?

    文章目录 引言 I.更新自动管理签名证书的设备描述文件的方案 II.iOS无线真机调试 III 手动管理证书: iOS证书(.p12)和描述文件(.mobileprovision)申请 3.1 登录 ...

  10. ios私钥证书和描述文件.mobileprovision的生成方法

    苹果官方提供的创建私钥证书的方法需要使用mac电脑,但我们很多人没有mac电脑,这样我们就需要使用第三方工具来申请ios证书. 在这里我推荐使用香蕉云编这个在线工具: https://www.yune ...

最新文章

  1. python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)...
  2. LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
  3. Preparation for International Women's Day
  4. 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)
  5. matlab线性平面映射求通项_代数学发展史: 线性空间
  6. python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...
  7. java处理请求的流程_Java Spring mvc请求处理流程详解
  8. Gcc 完全参考手册,参数说明,操作指南-Gcc Complete referene
  9. Vue常用经典开源项目
  10. Linux Semaphore
  11. 抓包软件 Fiddler 了解一下?
  12. Jmeter(五)bayboy录制时弹窗“当前页面的脚本发生错误”解决办法
  13. linux系统etc什么意思,请问linux下的etc是什么意思?
  14. swift转场动画_Swift游乐场的演变
  15. Eel+VUE python GUI编程
  16. iview表格表头上添加icon图标
  17. Python代码cProfile耗时分析及可视化
  18. 写正则好用的测试工具
  19. 软件分享|eCognition9.0下载
  20. 自学SQL网题解(6-12课题解)

热门文章

  1. 在這個神奇的國度找個正常點兒的DNS都很困難
  2. minus subtract deduct这三个单词的区别
  3. 华盛顿大学计算机专业硕士申请,华盛顿大学计算机科学与工程理学硕士研究生申请要求及申请材料要求清单...
  4. 关于opencv的rows和cols的理解
  5. 酷柚易汛进销存开发进度一览表以及各版本之间区别!
  6. IIS 7无法写入配置文件C:\Windows\System32\inetsrv\config\applicationHost.config
  7. sklearn.neighbors.KNeighborsClassifier()函数解析(最清晰的解释)
  8. SVD降维(相当好理解的文章)
  9. numpy浅拷贝与深拷贝
  10. 区块链的底层技术:P2P网络原理与应用详解