iOS证书深究

iOS的系列证书很令人头痛,但是也提供了完整的保护。

在开发过程中,遇到的基本的证书有Xcode真机调试或者打包用证书,也有消息推送证书等;每种证书分为开发版(development)和发布版(distribute)。除了证书,还有概要配置文件。众多的分类和配置,很容易混淆,接下来详细描述一番,并解释我的理解。

先看苹果开发者中心的证书界面。主要分类为:Certificate、AppID、Device、Provisioning Profile。

AppID是一切的开始,就如一个身份证,和每个人是唯一对应的;根据identifier生成不同类型的证书,都在Certificate列表里,证书之间都是平等关系,例如消息推送证书不是根据打包证书生成的,而同样是根据identifier产生的;Device列表管理测试用设备;Provisioning Profile是概要配置文件,是联系identifier、设备、证书的一个纽带,一般先选择AppID,然后指定证书和测试设备,进而产生作为纽带的配置文件。

除了上述对象,在产生部分文件过程中,还有一个证书签名请求文件(CSR),这是标识Mac OS系统的,上述文件要用在哪台Mac机上,就用该机钥匙串生成的CSR文件。

不然,会出现如下错误:将非本Mac机CSR文件支持产生的证书导入钥匙串,是找不到私钥的,这样就无法在Xcode中使用。

各种证书的生成方法和过程,想必不会太纠结,按照提示就可以了,关键在于使用过程中的关系。

证书生成好以后,下载下来,双击,就会自动加载到钥匙串的“登陆”项中,有私钥就说明添加成功了。概要配置文件也是双击,会自动加载到Xcode中。然后去Xcode的Target编译设置中,找到Code Signing项,对应debug、release、distribute三种模式,先选择相应的配置文件,然后在证书配置项里就可以看到跟配置文件关联的证书选项。

介绍一下推送证书。推送证书是根据AppID产生的,然后下载下来,格式为.cer,也可以先双击加入钥匙串,然后在钥匙串中导出p12格式的文件,也可以生产.pem格式,供不同推送程序直接加载使用。而推送证书跟应用的唯一关联关系,就存储于概要配置文件中,所以应该先生产推送证书,后生成概要配置文件。否则就会引发推送无效的问题。

再说一下Ad Hoc证书。这种证书跟发布版(distribute)类似,也就是说可以Archive成ipa安装包。但是不能上传到AppStore中。主要用于给远方合作的测试人员使用。这样既解决了远距离安装测试的问题,也避免了ipa包被他人传到AppStore中。

 

补充:

开发版和发布版证书会产生不同的deviceToken,但是只有前者才能在Xcode中log输出看到,因为后者只能Archive打包成ipa包,所以为了测试,可以show一个UIAlertView出来。

这就引申出消息推送的一个问题。在测试开发版和发布版app时候,同一台设备,会产生两个deviceToken,切记不要搞错了推送目标!

iOS证书深究的更多相关文章

  1. iOS证书失效

    iOS证书突然失效 今早上班打包直接报错,错误如图 根据错误信息到“钥匙串”里面看了一下证书,证书都莫名其妙的失效了,昨天还是好好的. 重新去钥匙串从证颁发中心获取证书,然后登陆开发者账号重新申请证书 ...

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

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

  3. ios证书

    内容提要: 安装app时提示 “无法下载应用,此时无法安装“XXX””.我遇到过多次是由于ios的app出现证书问题.本篇文章讲解用ios证书制作过程,以及每个步骤的解释. 正文: Xcode签名至少 ...

  4. iOS证书申请详细流程

    一.事前准备 1.1 准备苹果帐号 首先您需要有一个苹果的开发者帐号,一个mac系统.如果没有帐号可以打开申请加入苹果的开发者计划.如何申请网上有详细的介绍,在此不多做介绍. 如果您已经有了一个帐号, ...

  5. iOS 证书申请和使用详解(详细版)

    对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成员介绍 1.Certification(证书) ...

  6. iOS 证书调试的理解(Personal)

    证书签名 证书:众所周知,我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,而这个过程中实际上是生成了一对公钥和私钥,保存 ...

  7. 阐明iOS证书和provision文件

    译:阐明iOS证书和provision文件 许多iOS开发人员都会和你说在iOS开发很困惑的问题之一,将app真正运行在真实的设备(iPhone iPad而不是模拟器),因为所有的这些都会涉及从苹果获 ...

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

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

  9. (转)iOS 证书、密钥及信任服务

    iOS 证书.密钥及信任服务 ——翻译自Apple Reference<Certificate,Key,and Trust Services Programming Guide> 本章描述 ...

随机推荐

  1. AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】

    原文:AES加密CBC模式兼容互通四种编程语言平台[PHP.Javascript.Java.C#] 由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理: 先简单从百度找来介绍: ...

  2. Android - 错: java.lang.IllegalStateException: Already attached

    错: java.lang.IllegalStateException: Already attached 本文地址: http://blog.csdn.net/caroline_wendy 可能原因: ...

  3. Linux/Unix

    Linux/Unix 新手和专家教程 你正在找一些高质量的Linux 和 UNIX 的教程吗?如果是,这篇文章会告诉你到哪去找到这些教程.这里我们将给出超过30个相当的不错的 Linux 和 UNIX ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)    ...

  5. hdu5044 Tree 树链拆分,点细分,刚,非递归版本

    hdu5044 Tree 树链拆分.点细分.刚,非递归版本 //#pragma warning (disable: 4786) //#pragma comment (linker, "/ST ...

  6. oracle_job 清空冗余数据 ,每一分钟执行一次

    参照这个例子:http://cherryqq.iteye.com/blog/855022 思路: data表中有4条数据 ,relation有3条数据,通过data_id 对应,需要定时删除 data ...

  7. oracle_体系结构图_逻辑结构图

    1.oracle 的体系结构图  重要!!! 2.oracle的逻辑结构图

  8. 线程同步synchronized

    一Java规划共享多个线程之间数据的能力. 当线程以异步方式訪问共享数据时.有时候是不安全的或者不和逻辑的. 比方卖火车票.同一时刻一个线程在读取数据,另外一个线程在处理数据,当处理数据的线程没有等到 ...

  9. hdu1848 Fibonacci again and again(SG游戏功能)

    现在的变化是看不清楚SG功能什么寻求方法 临时模板标题是首当 性能mex1它正在寻求g(x) 然后XOR #include<cstdio> #include<iostream> ...

  10. Pki原则

    核心提示: 公开密钥和公开密钥证明书,产生的私钥client要么server证书.加密的公共密钥才能解密私钥文件只.私钥只能解密公开的加密文件.公众认为,它是开放的.所有的人都能够得到它.私人还表明, ...