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. PHP获取二维数组中的指定若干列【同array_column】

    PHP5.3以上  用到了array_map 使用匿名函数进行处理 代码: <?php function array_col($arr = array(), $idx = 0, $newidx ...

  2. [RxJava]在学习RxJava中的错误理解

    关于RxJava语法的问题与理解   最近看到一个blog-RxJava 写到关于Observable数据异步加载的介绍.针对fromCallable和just操作符在使用上的问题来跟大家针对代码进行 ...

  3. React-Native -课后练习

    import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Image, } fro ...

  4. nfs配置注意点

    #ip与括号之间不能有空格,不加rw参数时挂载的目录是只读的 /eqp/export/ 10.10.30.0/24(rw,sync,no_root_squash) #更改目录所属的组和所属的用户(nf ...

  5. HDU2818 并查集

    Building Block Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. SQL语句经典大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name  2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  7. navicat 结合快捷键

    ctrl+q 打开查询窗口ctrl+/ 注释sql语句ctrl+shift +/ 解除注释ctrl+r 运行查询窗口的sql语句ctrl+shift+r 只运行选中的sql语句F6 打开一个mysql ...

  8. 四则运算安卓客户端UI截图(部分)

    1.我们组安卓手机客户端UI设计主要由林培文同学负责,界面中用到的素材全部由他一人用PS制作,所以在素材来源上当属原创啦.正因为UI由一个人设计,同时他还得分担少量后台代码的编写,颇多的工作量与人才短 ...

  9. FAT32 FAT区__FAT表解析

    一. FAT 表概述 位置: 紧跟在文件系统的“保留区”之后 : 有两个数据结构完全相同的FAT(FAT,File Allocation Tbale 文件分配表)组成. 作用: FAT表项,描述文件系 ...

  10. qt5.5 qtcreator中文乱码

    MSVC2010默认保存GBK编码.如果不转换成utf-8编码,对GBK编码的文件,中文可以直接用QStringLiteral()宏,如:QMessageBox msgBox;msgBox.setTe ...