译:阐明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。

写的这些能在官方文档之外帮助到我,我也希望能帮助到其他人,我希望没有谬误,如果有任何问题,请留言,我将解决它。

阐明iOS证书和provision文件的更多相关文章

  1. iOS证书和描述文件

    iOS有两种证书和描述文件: 证书类型 使用场景 开发(Development)证书和描述文件 用于开发测试,在HBuilder中打包后可在真机环境通过Safari调试 发布(Distribution ...

  2. iOS 证书, provision profile作用

    证书(certificate): 给app签名用的,针对开发者,app可以装在真机上的前提条件之一是被签名 Provision profile: 在app包中,用来校验app是否可以被装在真机上,一个 ...

  3. Windows/Linux 生成iOS证书及p12文件

    操作步骤 生成csr文件(通过OpenSSL命令) 生成mobileprovision文件(通过Apple开发者后台) 生成cer文件(通过Apple开发者后台) 生成P12文件(通过OpenSSL命 ...

  4. iOS证书和描述文件的配置

    1.登录Apple开发者账号,进入Apple Developer主页,点击Account 2.点击Certificates,ID&Profiles 3.生成CRS文件 1.打开mac上的钥匙串 ...

  5. 真机测试---iOS证书(.p12)和描述文件(.mobileprovision)

    iOS证书和描述文件: 证书类型 使用场景 开发(Development)证书和描述文件 用于开发测试,在starain中打包后可在真机环境通过Safari调试 发布(Distribution)证书和 ...

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

    1.   相关资源 (1)   钥匙串程序(常用工具->钥匙串),用于创建证书请求.安装证书.导出私钥等 (2)   IOS开发中心:https://developer.apple.com/de ...

  7. iOS开发:创建真机调试证书及描述文件

    iOS开发:创建真机调试证书及描述文件 关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于开发证书,生产证书,in_house证书,add_Hoc证书申请过程中的问题,以及上架 ...

  8. iOS推送证书转pem文件

    iOS推送证书转 .pem文件. 推送证书转pem文件openssl x509 -in apns_miaobozhibo.cer -inform der -out apns_miaobozhibo.p ...

  9. iOS开发-- 开发环境,证书和授权文件

    一.成员介绍 1.    Certification(证书)证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:1)    Developer Certification(开发证书)安装在电脑 ...

随机推荐

  1. c++与C# winform的消息通讯--(结构体与byte数组的使用)

    近期正在做一个蓝牙驱动的使用程序,其中有一块从c++发送数据到C#的部分,网上查了很多资料,大多都是介绍如何通过调用函数获取用户数据.并且在消息发送中,很少介绍如何发送一个结构体,并且结构体里面有 b ...

  2. 转:android中APK开机自动运行

    背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED.只 ...

  3. 初识pngdrive

    初识是第一次认识的意思,类似的词还有初见.初遇.初心.初愿.初恋.初吻……梦里相见如初识,很美好的感觉.同样,今天我们要认识的也是一个比较神奇美妙的东西,至少对于程序员来说. 我曾经尝试过很多文件加密 ...

  4. em,pt和px之间的换算

    任意浏览器的默认字体高度16px(16像素).所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em,10px=0.625em.为了简化font-size的换算,需要在css中的b ...

  5. 解决IE6下不支持 png24的透明图片问题

    常用的两种解决方案: 第一:使用IE滤镜解决 关键代码: css代码  _background:none;_filter:progid:DXImageTransform.Microsoft.Alpha ...

  6. jquery mobile页面跳转后,必须重新刷新页面js方可有效

    最近在做个项目,用到jquery mobile,很陌生对他,问题一个个的来,那就要一个个解决,找了一天这个问题,放可明白:首先明白jqm里面页面跳转默认都是通过ajax请求的,必须重新刷新页面js方可 ...

  7. 【python之路6】pycharm的使用

    1.pycharm简介 PyCharm 是我众多python编辑器中比较好的一个.而且可以跨平台,在macos和windows下面都可以用,这点比较好. PyCharm是一种Python IDE,带有 ...

  8. #include<filename.h> 与 #include“filename.h”

    #include<filename.h>:从标准库路径去寻找该文件,对于VC来说,应该还包括VC环境设置选项中的包含目录以及工程属性中指定的目录. #include“filename.h” ...

  9. Python连接Redis连接配置

    1. 测试连接: Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", ...

  10. Web-Scale IT 我之见!

    Gartner 曾在发表过的一篇文章中表示,到2017年,全球50%的企业将使用Web-Scale IT 架构.下面我们来看看 Andre Leibovici 对 Web-Scale IT 的看法: ...