Development Certificates:在电脑通过秘钥串生成一个私人秘钥,这就是:CertificateSigningRequest.certSigningRequest 简称CSR,团队中,不同的开发者应该都要有独自的development证书。

App ID:创建的工程的唯一标
  新建:Developer Member Center
  使用:XcodeTarget | Info | Bundle Identifier

Certificate:证书,证明app的合法性、完整性、未经纂改。
  普通个人开发账号最多可注册iOS Development/Distribution证书各2个。
  根证书:CA(证书授权中心)颁发给自己的,信任链的起点。iOS、Mac OS X自动安装AppleWWDRCA.cer。

CSR:Certificate Signing Request,申请证书
  新建:
  (1)KeyChain中请求证书,填写开发账号邮件和常用名称,保存到本地;
  (2)KeyChain将生成一个CSR文件,同时Keys会新增一堆Public/Private Key Pair;
    private key:始终保存在Mac OS的Keychain Access中,用于签名(CodeSign)对外发布的App;
    public key:一般随证书(随Provisioning Profile,随App)散布出去,对App签名进行校验认证。用户必须保护好本地Keychain中的private key,以防伪冒。
  (3)Developer Center上传该CSR文件,来添加证书,
  Apple证书颁发机构WWDRCA(Apple Worldwide Developer Relations Certification Authority)将使用private key对CSR中的public key和一些身份信息进行加密签名生成数字证书(ios_development.cer)并记录在案(Apple Member Center)。
  (4)下载生成好的证书文件,并双击
  在KeychainAccess|Keys中展开创建CSR时生成的Key Pair中的私钥前面的箭头,可以查看到包含其对应公钥的证书;
  在Keychain Access|Certificates中展开安装的证书(ios_development.cer)前面的箭头,可以看到其对应的私钥。
  当然也可在Xcode中添加开发账号自动同步证书和[生成]配置文件。
  使用:
  Certificate被配置到【Xcode Target|Build Settings|Code Signing|Code Signing Identity】。

Provisioning Profiles:类别 + AppID(单选) + Certificates(多选) + Devies(多选),每个app都应该有独自的provisioning peofile。
  一个App可以允许不同的开发者,在不同的多个设备上调试。
  创建Provisioning Profile时,可以选择多个certificates,就意味着团队中不同的开发者子不同电脑上可以使用同一个provisioning pforile。
  目录:~/Library/MobileDevice/Provisioning Profiles。
  使用:
  Provisioning Profile被配置到【XcodeTarget|Build Settings|Code Signing|Provisioning Profile】下,
  然后在Code Signing Identity下拉可选择Identities from Profile "..."(即Provisioning Profile中包含的Certificates)。

Xcode中配置的Code Signing Identity(entitlements、certificate)必须与Provisioning Profile匹配,
并且配置的Certificate必须在本机Keychain Access中存在对应Public/Private Key Pair,否则编译会报错。

Code Singing:签名
  每个证书(其实是公钥)对应Key Pair中的私钥会被用来对内容进行数字签名(CodeSign)——使用哈希算法生成内容摘要(digest)。

验证过程:
  原理:Provisioning Profiles打包时会进ipa,app安装时,会被拷贝到ios设备中。
  验证:左边为app中的信息,右边为对应的provisioning profile中的信息
  bundle ID ------ App ID
  entitements ------ entitements
  certificte ------ certificte
  devicee ID ------ Device ID

如果要打包或者在真机上运行一个APP,一般要经历以下三步:
  首先,需要指明它的App ID,并且验证Bundle ID是否与其一致;
  其次,需要证书对应的私钥来进行签名,用于标识这个APP是合法、安全、完整的;
  然后,如果是真机调试,需要确认这台设备是否授权运行该APP。

不同电脑可以通过p12共享同一个私钥。

提交CSR的时候需要你MAC的KeyChain Assistant,相当于跟Apple说,“我这里有台MAC myMAC”。
App Id 相当于跟Apple说,“我这里有个App myApp”。
Device Id(UUID), "我这里有个 device myDevice"

问题:我们游戏的App ID是哪一个?是否和Bundle Identifier名字完全一样?
Mac的KeyChain Access(证书助理)在哪儿?

关于xcode导出设置中的一些概念的更多相关文章

  1. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  2. Xcode自定义Eclipse中常用的快捷键

    转载自http://joeyio.com/2013/07/22/xcode_key_binding_like_eclipse/ Xcode自定义Eclipse中常用的快捷键 22 July 2013 ...

  3. Xcode无法设置视图的 autosizing control原因

    转自:Xcode无法设置视图的 autosizing control原因 学习Xcode的iOS编程时,可能会发现Autosizing Control不见了,其原因很简单,因为你在设置中选择了Auto ...

  4. PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念

    PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念 据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量 ...

  5. OC中协议的概念以及用法

    OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...

  6. 在 Android 中 Intent 的概念及应用

    一.显式Intent: startActivity(new Intent(MainActivity.this, 类名.class));   二.隐式Intent: 1.在AndroidManiFest ...

  7. Unity编程标准导引-Unity中的基本概念-2.1界面概览

    Unity中的基本概念 本文我们介绍Unity中的基本概念,包括:场景.游戏对象.组件.预制件.资源等. 2.1.界面概览 打开Unity之后,我们大概可以看到以上画面,以上画面中即显示了我们最常用到 ...

  8. Unity编程标准导引-2.2Unity中的基本概念

    2.2Unity中的基本概念 上述介绍提到了几个概念:游戏对象.场景.资源.相机,这个小节我们来深入了解,同时进行一些实践性操作.不过首先,我们需要大概了解一下Unity的工程文件夹. 2.2.1工程 ...

  9. Xcode导出App一般问题及其解决方法(开发者协议变更及Bundle Id过期问题)

    Xcode导出App一般问题及其解决方法 问题一:开发者协议变更问题. 变更后打包会出现如下图A警告,此时点击 "visit developer website"进入Apple开发 ...

随机推荐

  1. android 5.0以上通知栏、状态栏图标变成白色

    在5.0以上的系统上发现,平常的自定义notification出来的icon,居然在状态栏上变成了纯白色的icon. 看源代码会发现: protected void applyColorsAndBac ...

  2. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  3. BZOJ‘s Usaco 奶牛题集锦

    1230 线段树 1231 状压DP 1232 最小生成树 1527 贪心 1600 打表找规律 1601 最小生成树 1602 prime 1606 DP 1607 筛法 1609 DP 1610 ...

  4. Day 1:学习Windows Phone 使用 SQLite

    private void move(string fn) { StreamResourceInfo sr = Application.GetResourceStream(new Uri(fn, Uri ...

  5. mac新手的烦恼

    最近新换了mac,我换mac并非自愿.无论mac的性能有多好,我依然讨厌使用appstore下载软件的感觉,尤其在我一遍又一遍忘记自己的appID的时候.无奈我的thinkpad常常死机,最近又常倒腾 ...

  6. 实现Myxls设置行高的功能(转)

    MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了.但是作者提供的代码没有设置行高 要实现这个效果,首先需要修改两个文件: 1.Row.c ...

  7. Mongodb常用命令介绍

    查看命令的方式: 1.在shell中运行db.listCommands() 2.在浏览器中访问管理员接口:http://ipaddress:28017/_commands 下面介绍在Mongodb中最 ...

  8. java 过滤表情符号

    /** * 过滤表情符号 * @create by ldw on 2016-10-25 * @param str * @return str(去掉表情符号的字符串) * @version 1.0 * ...

  9. PHP:Xdebug配置

    在配置Xdebug时,之前经历了无数次失败,终于配置成功! 以下是配置失败的原因: 1.下载时,选用Xdebug的版本不正确: 2.配置时,Xdebug文件名或文件的路径不正确: 在参考 http:/ ...

  10. Python 爬虫6——Scrapy的安装和使用

    前面我们简述了使用Python自带的urllib和urllib2库完成的一下爬取网页数据的操作,但其实能完成的功能都很简单,假如要进行复制的数据匹配和高效的操作,可以引入第三方的框架,例如Scrapy ...